Submission #88258

#TimeUsernameProblemLanguageResultExecution timeMemory
88258amiratouDetecting Molecules (IOI16_molecules)C++14
31 / 100
401 ms912 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int> > vec;
vector<int> ans;
bool used[200005];
unordered_map<long long,bool> mymap;
int n,L,R;
bool solve(long long sum,int idx){
	if(sum>R){
		mymap[sum]=0;
		return 0;
	}
	if(sum>=L&&sum<=R){
		for (int i = 0; i < n; ++i)
		{
			if(used[i])
				ans.push_back(i);
		}
		return 1;
	}
	if(mymap.find(sum)!=mymap.end())
		return 0;
	for (int i = idx+1; i < n; ++i)
	{
		used[vec[i].second]=1;
		if(solve(sum+vec[i].first,i))return 1;
		mymap[sum+vec[i].first]=1;
		used[vec[i].second]=0;
	}
	return 0;
}
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	n=w.size();
	L=l;R=u;
	vec.resize(n);
	for (int i = 0; i < n; ++i)
	{
		vec[i].first=w[i];
		vec[i].second=i;
	}
	sort(vec.begin(),vec.end());
	if(!solve(0,-1))
		return vector<int>(0);
    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...