Submission #145646

#TimeUsernameProblemLanguageResultExecution timeMemory
145646karmaDetecting Molecules (IOI16_molecules)C++11
0 / 100
2 ms504 KiB
#include<bits/stdc++.h> //#include "molecules.h" #define ll long long #define mp make_pair #define fi first #define se second using namespace std; typedef pair<int, int> pii; vector<int> find_subset(int l, int u, vector<int> w) { vector<pii> _w; vector<bool> used; vector<int> ans; ans.clear(); int n, pivot = -1, s = 0; n = w.size(); _w.resize(n); used.resize(n); for(int i = 0; i < n; ++i) { if(w[i] >= l && w[i] <= u) { ans.push_back(i); return ans; } _w[i] = mp(w[i], i); } sort(_w.begin(), _w.end()); for(int i = 0; i < n; ++i) { if(s + _w[i].fi <= l) s += _w[i].fi, used[_w[i].se] = 1, pivot = i; else break; } if(s >= l && s <= u) { for(int i = 0; i < n; ++i) if(used[i]) ans.push_back(i + 1); return ans; } for(int i = pivot + 1; i < n; ++i) { if(_w[i].fi > u) break; int upper = _w[i].fi - l + s, lower = _w[i].fi - u + s; int pos = lower_bound(_w.begin(), _w.begin() + pivot, mp(lower, -1)) - _w.begin(); if(_w[pos].fi <= upper) { s -= _w[pos].fi; s += _w[i].fi; used[_w[pos].se] = 0, used[_w[i].se] = 1; break; } } if(s >= l && s <= u) { for(int i = 0; i < n; ++i) if(used[i]) ans.push_back(i + 1); } return ans; } /*int main() { ios_base::sync_with_stdio(0); cin.tie(0); if(fopen("test.inp", "r")) { freopen("test.inp", "r", stdin); freopen("test.out", "w", stdout); } cin >> n >> l >> u; }*/
#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...