Submission #1000331

#TimeUsernameProblemLanguageResultExecution timeMemory
1000331overwatch9Detecting Molecules (IOI16_molecules)C++17
19 / 100
1 ms436 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; vector<int> find_subset(int l, int u, std::vector<int> w) { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n = w.size(); vector <int> mn(n), mx(n); for (int i = 0; i < n; i++) { mn[i] += w[i]; mx[i] += w[n - i - 1]; if (i > 0) { mn[i] += mn[i-1]; mx[i] += mx[i-1]; } } vector <int> ans; for (int i = 0; i < n; i++) { if (mn[i] >= l && mn[i] <= u) { for (int j = 0; j <= i; j++) ans.push_back(j); return ans; } auto it = lower_bound(mx.begin(), mx.end(), l - mn[i]); if (it != mx.end() && mn[i] + *it >= l && mn[i] + *it <= u && int(it - mx.begin()) + i + 1 < n) { for (int j = 0; j <= i; j++) ans.push_back(j); int x = it - mx.begin(); for (int j = 0; j <= x; j++) ans.push_back(n - j - 1); return ans; } } for (int i = 0; i < n; i++) { if (mx[i] >= l && mx[i] <= u) { for (int j = 0; j <= i; j++) ans.push_back(n - j - 1); return ans; } auto it = lower_bound(mn.begin(), mn.end(), l - mx[i]); if (it != mn.end() && mx[i] + *it >= l && mx[i] + *it <= u && int(it - mn.begin()) + i + 1 < n) { int x = it - mn.begin(); for (int j = 0; j <= x; j++) ans.push_back(j); for (int j = 0; j <= i; j++) ans.push_back(n - j - 1); return ans; } } return ans; }
#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...