제출 #229451

#제출 시각아이디문제언어결과실행 시간메모리
229451nickmet2004Detecting Molecules (IOI16_molecules)C++11
0 / 100
5 ms384 KiB
#include<bits/stdc++.h> #include<molecules.h> #define ll long long using namespace std; const int N = 2e5 + 500; long long pr[N]; pair<int , int> a[N]; vector<int > res; vector<int> find_subset(int l , int u , vector<int> w){ int n = w.size(); for(int i = 0; i < n; ++i){ a[i] = {w[i] , i}; } sort(a , a + n); pr[0] = a[0].first; for(int i = 1; i < n; ++i){ pr[i] = pr[i - 1] + a[i].first; } for(int i = 0; i < n; ++i) //cerr << pr[i] << " "; cerr << endl; for(int i = 0; i < n; ++i){ ll x = pr[i] - l; if(x < 0) continue; //cerr << x << " x " << endl; int lw = 0 , rh = i; ll ans = -1; while(lw <= rh){ int m =(lw + rh) >> 1; if(pr[m] <= x){ ans = m; //cerr << ans << " ansmid " << endl; lw = m + 1; } else { rh = m - 1; } } if(ans != -1){ //cerr << pr[i] - pr[ans] << " pri- wans " << endl; if(pr[i] - pr[ans] >= l && pr[i] - pr[ans] <= u){ for(int k = ans + 1; k <= i; ++k){ res.emplace_back(a[k].second); } //sort(res.begin() , res.end()); return res; } } } return res; } /* int main (){ int n, l , u; cin >> n >> l >> u; vector<int> w (n); for(int i = 0; i < n; ++i) cin >> w[i]; vector<int> ans = find_subset(l , u ,w); for(int x : ans) cout << x << " "; cout << endl; } */
#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...