Submission #218538

#TimeUsernameProblemLanguageResultExecution timeMemory
218538emil_physmathDetecting Molecules (IOI16_molecules)C++17
46 / 100
1090 ms25164 KiB
#include "molecules.h" #include <iostream> #include <bitset> #include <vector> using namespace std; bitset<10001> dp[10001], take[10001]; vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); dp[0][0] = dp[0][w[0]] = true; take[0][w[0]] = true; for (int i = 1; i < n; ++i) { dp[i][0] = true; take[i][0] = false; for (int j = 1; j <= u; ++j) if (dp[i - 1][j]) { take[i][j] = false; dp[i][j] = true; } else if (j - w[i] >= 0 && dp[i - 1][j - w[i]]) { take[i][j] = true; dp[i][j] = true; } } for (int j = l; j <= u; ++j) if (dp[n - 1][j]) { vector<int> res; for (int i = n - 1; i >= 0; --i) if (take[i][j]) { res.push_back(i); j -= w[i]; } return res; } 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...