Submission #409017

#TimeUsernameProblemLanguageResultExecution timeMemory
409017GurbanDetecting Molecules (IOI16_molecules)C++17
100 / 100
65 ms7352 KiB
#include <bits/stdc++.h> #include "molecules.h" using namespace std; using ll = long long; const int maxn=2e5+5; ll p[maxn]; vector<int> find_subset(int l, int u, vector<int> w) { vector<int>ans; if(l > u) return ans; ll cnt = 0; for(int i = 0;i < (int)w.size();i++){ if(w[i] >= l and w[i] <= u){ ans.push_back(i); return ans; } if(w[i] < l) cnt += w[i]; } if(cnt < l) return ans; vector<pair<int,int>>v; for(int i = 0;i < (int)w.size();i++) v.push_back({w[i],i}); sort(v.begin(),v.end()); vector<ll>lft((int)w.size()); lft[0] = v[0].first; for(int i = 1;i < (int)w.size();i++){ lft[i] = (lft[i-1] + v[i].first); if(lft[i] >= l and lft[i] <= u){ for(int j = 0;j <= i;j++) ans.push_back(v[j].second); return ans; } } // for(int i = 0;i < (int)w.size();i++) cout<<v[i].first<<' '; ll sum = 0; for(int i = (int)w.size()-1;i >= 0;i--){ sum += v[i].first; if(sum >= l and sum <= u){ for(int j = i;j < (int)w.size();j++) ans.push_back(v[j].second); return ans; } int bl = 0,br = i-1,md,jog = -1; while(bl <= br){ md = (bl + br) / 2; if(sum + lft[md] >= l){ jog = md; br = md - 1; } else bl = md + 1; } if(jog == -1) continue; if(sum + lft[jog] <= u){ for(int j = 0;j <= jog;j++) ans.push_back(v[j].second); for(int j = i;j < (int)w.size();j++) ans.push_back(v[j].second); return ans; } } return ans; } // int main(){ // ios::sync_with_stdio(false); // cin.tie(0); // int n,l,r; cin >> n >> l >> r; // vector<int>w(n); // for(int i = 0;i < n;i++) cin >> w[i]; // vector<int> ans = find_subset(l,r,w); // for(auto i : ans) cout<<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...