Submission #722791

#TimeUsernameProblemLanguageResultExecution timeMemory
722791allin27xDetecting Molecules (IOI16_molecules)C++17
0 / 100
0 ms256 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

bool compare(pair<ll,ll> &a, pair<ll, ll> &b) {return a.first<b.first;}
vector<int> find_subset(int l, int u, vector<int> w){
	ll n = w.size();
	ll s1 = 0, s2 = 0;
	vector<pair<ll, ll>> t(n);
	for (int i=0; i<n; i++) t[i].first = w[i], t[i].second=i;
	sort(t.begin(), t.end());
	for (int sz = 1; sz<=n; sz++){
		s1 += t[sz-1].first; s2+=t[n-sz].first;
		if (s1<l && s2>u){
			vector<int> res(sz,0);
			for (int i=0; i<sz; i++) res[i] = t[i].second;
			for (int i=sz-1; i>=0; i--){
				if (s1-t[i].first+t[n-sz+i].first<l){
					s1+=t[n-sz+i].first-t[i].first;
					res[i] = t[n-sz+i].second;
				} else {
					for (int j=i+1; s1<l; j++){
						s1+=t[j].first-t[j-1].first;
						res[i] = t[j].second;
					}
					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...