Submission #218536

#TimeUsernameProblemLanguageResultExecution timeMemory
218536emil_physmathDetecting Molecules (IOI16_molecules)C++17
0 / 100
5 ms384 KiB
#include "molecules.h" #include <iostream> #include <vector> using namespace std; vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector<vector<bool> > dp(n, vector<bool>(u + 1)); vector<vector<bool> > take(n, vector<bool>(u + 1)); 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] != -1) { 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...