// yesno.cpp : Defines the entry point for the console application. // #include #include #include #include using namespace std; struct loc { int numInt, numSob; vector caps; }; void main() { ifstream infile("party.in"); int sets; infile >> sets; int i, j, k; int numC, numF, numLoc; loc locs[1000]; int tempI; char tempC; int curC; int numDriv; int stuck; for (int set = 0; set < sets; set++) { stuck = 0; for (i = 0; i < 1000; i++) { locs[i].numInt = 0; locs[i].numSob = 0; locs[i].caps.clear(); } infile >> numF >> numC >> numLoc; for (i = 0; i < numF; i++) { infile >> tempI >> tempC; if (tempC == 'I') { locs[tempI-1].numInt++; } else { locs[tempI-1].numSob++; } } for (i = 0; i < numC; i++) { infile >> curC >> tempI; locs[curC-1].caps.push_back(tempI); } for (i = 0; i < numLoc; i++) { sort(locs[i].caps.rbegin(), locs[i].caps.rend()); numDriv = min(locs[i].numSob, (int)locs[i].caps.size()); locs[i].numSob -= numDriv; for(j = 0; j < numDriv; j++) { locs[i].caps[j]--; //driver tempI = min (locs[i].numInt, locs[i].caps[j]); locs[i].caps[j] -= tempI; locs[i].numInt -= tempI; tempI = min (locs[i].numSob, locs[i].caps[j]); locs[i].caps[j] -= tempI; locs[i].numSob -= tempI; } stuck += locs[i].numInt + locs[i].numSob; } cout << "Data Set " << set+1 << ":\n"; cout << stuck << endl; } }