Submission #265590

#TimeUsernameProblemLanguageResultExecution timeMemory
265590cjoaDetecting Molecules (IOI16_molecules)C++11
19 / 100
1 ms512 KiB
#include "molecules.h" #include <iostream> #include <vector> #include <map> #include <cassert> using namespace std; std::vector<int> find_subset(int l, int u, std::vector<int> w) { const int N = w.size(); map< int,vector<int> > MAP; for (int i = 0; i < N; ++i) MAP[ w[i] ].push_back(i); assert(MAP.size() <= 2); if (MAP.size() == 1) { // subtask 1 long long sum = 0; for (int i = 0; i < N; ++i) { sum += w[i]; if (l <= sum && sum <= u) { vector<int> res; for (int j = 0; j <= i; ++j) res.push_back(j); return res; } } return {}; } int N1 = MAP.begin()->second.size(); int W1 = MAP.begin()->first; int N2 = MAP.rbegin()->second.size(); int W2 = MAP.rbegin()->first; for (int n1 = 0; n1 <= N1; ++n1) { for (int n2 = 0; n2 <= N2; ++n2) { long long sum = n1 * W1 + n2 * W2; if (l <= sum && sum <= u) { vector<int> res; for (int i = 0; i < n1; ++i) res.push_back( MAP[W1][i] ); for (int i = 0; i < n2; ++i) res.push_back( MAP[W2][i] ); return res; } } } return {}; }
#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...