Submission #143814

#TimeUsernameProblemLanguageResultExecution timeMemory
143814WhipppedCreamDetecting Molecules (IOI16_molecules)C++17
100 / 100
86 ms6376 KiB
#include "molecules.h" #pragma GCC optimize ("O3") #pragma GCC target ("sse4") #include <bits/stdc++.h> using namespace std; typedef pair<int, int> ii; typedef vector<int> vi; typedef long long ll; #define f first #define s second #define pb push_back #define lb lower_bound #define ub upper_bound #define sz(x) (int)x.size() #define all(x) begin(x), end(x) #define rsz resize const int md = 1e9+7; const ll inf = 1e18; const int maxn = 2e5+5; template<class T> void ckmin(T &a, T b) { a = min(a, b); } template<class T> void ckmax(T &a, T b) { a = max(a, b); } vector<int> w; vector< ii > foo; vector<int> get(int a, int b) { vi res; for(int i = a; i<= b; i++) res.pb(foo[i].s); return res; } vector<int> find_subset(int l, int u, vector<int> W) { int n = W.size(); for(int i = 0; i< n; i++) foo.pb(ii(W[i], i)); sort(foo.begin(), foo.end()); sort(W.begin(), W.end()); w = W; ll run = 0; int dat = -1; for(int i = 0; i< n; i++) { run += w[i]; if(run>= l) { dat = i; break; } } if(run<= u) return get(0, dat); ll cur = 0; for(int i = 0; i< dat; i++) cur += w[i]; if(l<= cur && cur<= u) return get(0, dat-1); for(int i = 1; i+dat-1< n; i++) { cur -= w[i-1]; cur += w[i+dat-1]; if(l<= cur && cur<= u) return get(i, i+dat-1); } return vector<int>(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...