Submission #485199

#TimeUsernameProblemLanguageResultExecution timeMemory
485199couplefireDetecting Molecules (IOI16_molecules)C++17
100 / 100
49 ms6296 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long vector<int> find_subset(int _l, int _r, vector<int> _w){ ll l = _l, r = _r; vector<ll> w; int n = _w.size(); for(auto x : _w) w.push_back(x); vector<int> id(w.size()); iota(id.begin(), id.end(), 0); sort(id.begin(), id.end(), [&](int a, int b){return w[a]<w[b];}); ll lsum = 0, rsum = 0; vector<int> res; for(int siz = 1; siz<=n; ++siz){ lsum += w[id[siz-1]]; rsum += w[id[n-siz]]; if(l<=lsum && lsum<=r){ for(int i = 0; i<siz; ++i) res.push_back(id[i]); return res; } if(l<=rsum && rsum<=r){ for(int i = 0; i<siz; ++i) res.push_back(id[n-1-i]); return res; } if(rsum<l || lsum>r) continue; int gap = n-siz; for(int i = siz-1; i>=0; --i){ lsum -= w[id[i]], lsum += w[id[i+gap]]; if(l<=lsum && lsum<=r){ for(int j = 0; j<i; ++j) res.push_back(id[j]); for(int j = i; j<siz; ++j) res.push_back(id[j+gap]); return res; } } } return {}; }
#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...