Submission #489171

#TimeUsernameProblemLanguageResultExecution timeMemory
4891711neDetecting Molecules (IOI16_molecules)C++14
19 / 100
1 ms296 KiB
#include "molecules.h" #include<bits/stdc++.h> using namespace std; std::vector<int> find_subset(int l, int u, std::vector<int> arr) { int n = arr.size(); int64_t sum = 0; int need = -1; multiset<int>brr; for(int i = 0;i<n;++i){ sum+=arr[i]; brr.insert(arr[i]); } vector<int>ans; if (sum<l){ return ans; } bool ok=false; vector<bool>visited(n+1,false); int ll = 0,r = 0; sum = 0; while(ll<n){ sum+=arr[ll]; brr.erase(brr.find(arr[ll])); ++ll; while(r<ll&&sum>u){ sum-=arr[r]; brr.insert(arr[r]); ++r; } if (sum>=l&&sum<=u){ for (int i = r;i<ll;++i){ visited[i] = true; ok=true; need = -1; } break; } auto temp = brr.lower_bound(l - sum); if (temp!=brr.end()&&sum + *temp >= l && sum + *temp<=u){ for (int i = r;i<ll;++i){ visited[i] = true; ok=true; need = *temp; } break; } } //cout<<need<<'\n'; if (ok){ for (int i = 0;i<n;++i){ if (visited[i]){ ans.push_back(i); } } if (need!=-1){ for (int i = 0;i<n;++i){ if (!visited[i]&&arr[i]==need){ ans.push_back(i); break; } } } } return ans; }
#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...