Submission #571085

#TimeUsernameProblemLanguageResultExecution timeMemory
5710851neDetecting Molecules (IOI16_molecules)C++14
100 / 100
63 ms3788 KiB
#include <cstdio>
#include <vector>
#include <cassert>
#include<bits/stdc++.h>
#include "molecules.h"
using namespace std;
std::vector<int> find_subset(int l, int u, std::vector<int> arr) {
	int n = (int)arr.size();
	vector<int>order(n);
	iota(order.begin(),order.end(),0);
	sort(order.begin(),order.end(),[&](int i,int j){
		return arr[i]<arr[j];
	});
	int j = 0;
	long long sum = 0;
	vector<int>ans;
	deque<int>cur;
	while(true){
		if (sum>=l && sum<=u){
			for (auto x:cur)ans.push_back(x);
			return ans;
		}
		if (j < n && sum + arr[order[j]] <=u){
			sum+=arr[order[j]];
			cur.push_back(order[j]);
			++j;
		}
		else if (!cur.empty()){
			sum-=arr[cur.front()];
			cur.pop_front();
		}
		else break;
	}
	for (auto x:cur)ans.push_back(x);
	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...