#include int main (void) { int k, K; int n, c, l; int i,j; int ccap[501][10]; int sob[501], tot[501]; char s; int loc, cap; int result; FILE *in = fopen ("party.in", "r"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { fscanf (in, "%d %d %d\n", &n, &c, &l); for (i = 1; i <= l; i ++) { sob[i] = tot[i] = 0; for (j = 1; j <= 10; j ++) ccap[i][j] = 0; } for (i = 1; i <= n; i ++) { fscanf (in, "%d %c\n", &loc, &s); if (s == 'S') sob[loc] ++; tot[loc] ++; } for (i = 1; i <= c; i ++) { fscanf (in, "%d %d\n", &loc, &cap); ccap[loc][cap] ++; } result = 0; for (i = 1; i <= l; i ++) { for (j = 10; j >= 1; j --) if (sob[i] >= ccap[i][j]) { tot[i] -= j*ccap[i][j]; sob[i] -= ccap[i][j]; } else { tot[i] -= j*sob[i]; sob[i] = 0; } if (tot[i] > 0) result += tot[i]; } printf ("Data Set %d:\n", k); printf ("%d\n", result); } fclose (in); return 0; }