#include #include #include #include #ifdef D #define _V(_v) cout << "Var: " #_v ": " << _v << " Line: " << __LINE__ << endl; #else #define _V(_v) #endif int main (int c, char **v) { ifstream in ("fuses.in"); int nodev, noops, maxamp; int seq = 0; while ((in >> nodev >> noops >> maxamp), (nodev != 0 || noops != 0 || maxamp != 0)) { seq++; vector devamp; vector devops; int readint; for (int i = 0; i < nodev; i++) { in >> readint; devamp.push_back(readint); _V(devamp[i]); } for (int i = 0; i < noops; i++) { in >> readint; devops.push_back(readint); } int curamp = 0; int curmax = 0; bool blown = false; vector devstate; for (int i = 0; i < nodev; i++) devstate.push_back(false); for (int i = 0; i < noops; i++) { devstate[devops[i] - 1] = !devstate[devops[i] - 1]; if (devstate[devops[i] - 1]) curamp += devamp[devops[i] - 1]; else curamp -= devamp[devops[i] - 1]; _V(curamp); if (curamp > maxamp) { blown = true; break; } if (curamp > curmax) curmax = curamp; } cout << "Sequence " << seq << endl; if (blown) cout << "Fuse was blown." << endl; else { cout << "Fuse was not blown." << endl; cout << "Maximal power consumption was " << curmax << " amperes." << endl; } cout << endl; } return 0; }