Submission #807626

#TimeUsernameProblemLanguageResultExecution timeMemory
807626OAleksaDetecting Molecules (IOI16_molecules)C++14
69 / 100
1067 ms7588 KiB
#include <bits/stdc++.h> #include "molecules.h" #define f first #define s second using namespace std; vector<int> find_subset(int l, int u, vector<int> w) { vector<pair<int, int>> a; int n = w.size(); for(int i = 0;i < n;i++) a.push_back({w[i], i}); sort(a.begin(), a.end()); vector<int> ans; for(int i = 0;i < n;i++) { if(a[i].f >= l && a[i].f <= u) { ans.push_back(a[i].s); return ans; } } vector<long long> p(n); p[0] = a[0].f; for(int i = 1;i < n;i++) p[i] = p[i - 1] + a[i].f; for(int i = 0;i < n;i++) { int l1 = i, r1 = n - 1, id = -1; while(l1 <= r1) { int mid = (l1 + r1) / 2; if(p[mid] - (i == 0 ? 0 : p[i - 1]) <= l) { id = mid; l1 = mid + 1; } else r1 = mid - 1; } if(id != -1) { vector<int> t; long long s = 0; for(int j = i;j <= id;j++) { t.push_back(a[j].s); s += a[j].f; } if(id != n - 1) { s += a[id + 1].f; t.push_back(a[id + 1].s); } if(s >= l && s <= u) { return t; } if(id == n - 1) break; s -= a[id + 1].f; int kurac = -1; for(int j = i;j <= id;j++) { if(s - a[j].f + a[id + 1].f <= u && s - a[j].f + a[id + 1].f >= l) { kurac = j; break; } } if(kurac == -1) continue; for(int j = i;j <= id + 1;j++) { if(j == kurac) continue; ans.push_back(a[j].s); } return ans; } } return ans; } // // int main() // { // ios_base::sync_with_stdio(false); // cin.tie(0); // cout.tie(0); // int tt = 1; // //cin >> tt; // while(tt--) { // int l, r; // cin >> l >> r; // int n; // cin >> n; // vector<int> x(n); // for(int i = 0;i < n;i++) // cin >> x[i]; // vector<int> res = find_subset(l, r, x); // for(auto x : res) // cout << x << " "; // cout << endl; // } // return 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...