Submission #243705

#TimeUsernameProblemLanguageResultExecution timeMemory
243705KubinDetecting Molecules (IOI16_molecules)C++17
69 / 100
1087 ms7068 KiB
#include <bits/stdc++.h> using namespace std; vector<int> find_subset(int l, int u, vector<int> w) { const size_t n = w.size(); vector<pair<int, size_t>> v; for(size_t i = 0; i < n; i++) v.emplace_back(w[i], i); sort(v.begin(), v.end()); sort(w.begin(), w.end()); int a = w[0]; for(auto& x : w) x -= a; vector<int64_t> s(n + 1), z(n + 1); for(size_t i = 0; i < n; i++) s[i+1] = s[i] + w[i], z[i+1] = z[i] + w[n-i-1]; vector<int> result; for(size_t k = 1; result.empty() and k <= n; k++) { for(size_t i = 0; i <= k; i++) { auto c = (int64_t)k * a + s[i] + z[k-i]; if(l <= c and c <= u) { result.reserve(k); copy(w.begin(), w.begin() + i, back_inserter(result)); copy(w.end() - (k-i), w.end(), back_inserter(result)); break; } } } for(auto& x : result) x += a; vector<int> ind; ind.reserve(result.size()); for(size_t i = 0, j = 0; i < n and j < result.size(); i++) if(v[i].first == result[j]) ind.push_back(v[i].second), j++; return ind; }
#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...