Submission #491981

#TimeUsernameProblemLanguageResultExecution timeMemory
491981nick_kcinDetecting Molecules (IOI16_molecules)C++14
31 / 100
1077 ms836 KiB
#include <cstdio> #include <vector> #include <map> #include <utility> using namespace std; // mappa numero-indice map<int, int> found; int nn[(int)1e6 + 5]; int nni; vector<int> find_subset(int l, int u, vector<int> w) { found[0] = -1; for (size_t i = 0; i < w.size(); i++) { int tw = w[i]; fprintf(stderr, "tw = %d\n", tw); nni = 0; for (auto it = found.begin(); it != found.end(); it++) { int nxt = it->first + tw; if (nxt > u) continue; auto nit = found.find(nxt); if (nit != found.end()) continue; nn[nni++] = nxt; } for (int k = 0; k < nni; k++) { found[nn[k]] = i; } } // for(auto it = found.begin(); it != found.end(); it++) { // fprintf(stderr, "D: %d -> %d\n", it->first, it->second); // } auto it = found.lower_bound(l); // fprintf(stderr, "DIT: %d -> %d\n", it->first, it->second); if (it != found.end() && it->first <= u) { vector<int> inx; int ww = it->first; int val = it->second; while(val != -1) { inx.push_back(val); int nxt = ww - w[val]; // fprintf(stderr, "Dowo: val = %d, nxt=%d\n", val, nxt); val = found[nxt]; ww = nxt; // sleep(1); } return inx; } else { return vector<int>(0); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...