Submission #416864

#TimeUsernameProblemLanguageResultExecution timeMemory
416864snasibov05Detecting Molecules (IOI16_molecules)C++14
9 / 100
76 ms65540 KiB
#include "molecules.h" #include <algorithm> using namespace std; #define pb push_back vector<vector<vector<bool>>> knapsack(vector<int>& w){ int n = w.size(); int sum = 0; for (int i = 0; i < n; ++i) sum += w[i]; vector<vector<vector<bool>>> dp(n, vector<vector<bool>>(sum+1, vector<bool>(2))); dp[0][w[0]][1] = true; dp[0][0][0] = true; for (int i = 0; i < n - 1; ++i) { for (int j = 0; j <= sum; ++j) { if (dp[i][j][0] || dp[i][j][1]){ dp[i+1][j][0] = true; dp[i+1][j + w[i+1]][1] = true; } } } return dp; } vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector<vector<vector<bool>>> dp = knapsack(w); int res = -1; for (int i = l; i <= u && i < dp[n-1].size(); ++i) { if (dp[n-1][i][1] || dp[n-1][i][0]) { res = i; break; } } vector<int> ans; if (res == -1) return ans; for (int i = n-1; i >= 0; --i){ if (dp[i][res][1]){ ans.pb(i); res -= w[i]; } } reverse(ans.begin(), ans.end()); return ans; }

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:36:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = l; i <= u && i < dp[n-1].size(); ++i) {
      |                               ~~^~~~~~~~~~~~~~~~
#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...