Submission #576696

#TimeUsernameProblemLanguageResultExecution timeMemory
576696Halym2007Detecting Molecules (IOI16_molecules)C++11
100 / 100
50 ms8860 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define cont continue; #define sz size() #define pb push_back using namespace std; typedef long long ll; const int N = 300005; // a1 a2 tapmaly ll n, ans, p[N], a1, a2, l1, r1, md, hp, slm; vector <int> q; vector <pair <ll, ll> > v; vector <int> find_subset(int l, int u, vector <int> w) { n = w.sz; a1 = 2*n; for (int i = 0; i < n; ++i) { v.pb ({w[i], i}); } sort (v.begin (), v.end()); p[0] = v[0].ff; for (int i = 1; i < n; ++i) { p[i] = p[i - 1] + v[i].ff; } for (int i = 0; i < n; ++i) { l1 = i; r1 = n-1; while (l1 <= r1) { md = (l1 + r1) / 2; if (!i) hp = p[md]; else hp = p[md] - p[i - 1]; if (hp > u) r1 = md - 1; else if (hp < l) l1 = md + 1; else{ a1 = i; a2 = md; slm = 1; break; } } if (slm) break; } for (int i = a1; i <= a2; ++i) q.pb (v[i].ss); sort(q.begin(), q.end()); return q; } /* int main () { vector <int> a = {6, 8, 8, 7}; for (int i = 0; i < find_subset(15, 17, a).size(); i++){ cout << find_subset(15, 17, a)[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...