Submission #936788

#TimeUsernameProblemLanguageResultExecution timeMemory
9367884QT0RDetecting Molecules (IOI16_molecules)C++17
100 / 100
49 ms9420 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

vector<int> find_subset(int l, int u, vector<int> w){
	ll n=w.size(),sm=0;
	vector<int> ans;
	vector<pair<ll,ll>> cp;
	for (int i = 0; i<n; i++){
		sm+=w[i];
		cp.push_back({w[i],i});
	}
	sort(cp.begin(),cp.end());
	if (sm<l)return {};
	set<pair<ll,ll>> s;
	sm=0;
	for (int i = 0; i<n; i++){
		sm+=cp[i].first;
		s.insert(cp[i]);
		if (l<=sm && sm<=u){
			for (auto u : s)ans.push_back(u.second);
			break;
		}
		if (sm>u){
			auto it = s.lower_bound({u-sm,-1});
			if (it==s.end())it--;
			sm-=it->first;
			s.erase(it);
		}
		if (l<=sm && sm<=u){
			for (auto u : s)ans.push_back(u.second);
			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...