Submission #167875

#TimeUsernameProblemLanguageResultExecution timeMemory
167875Peacher29Detecting Molecules (IOI16_molecules)C++14
100 / 100
61 ms5752 KiB
#include "molecules.h"

#include<bits/stdc++.h>

using namespace std;

bool b[200000];

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	vector<pair<int,int>> p(w.size());
	vector<int> er;
	int n=w.size();
	for(int i=0;i<w.size();i++){
		p[i].first=w[i];
		p[i].second=i;
	}
	sort(p.begin(),p.end());
	long long osszeg=0;
	for(int i=p.size()-1;i>=0 && osszeg < l ; i--){
		osszeg+=p[i].first;
		b[i]=1;
	}
	int p1=p.size()-1, p2=0;
	while(osszeg>u){
		if(b[p2]){
			break;
		}
		if(!b[p1]){
			break;
		}
		b[p2]=1;
		b[p1]=0;
		osszeg-=p[p1].first;
		osszeg+=p[p2].first;
		++p2;
		--p1;
	}
	if(osszeg>=l && osszeg <= u){
		for(int i=0;i<n;i++){
			if(b[i])
				er.push_back(p[i].second);
		}
	}
	return er;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:13:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<w.size();i++){
              ~^~~~~~~~~
#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...