Submission #206351

#TimeUsernameProblemLanguageResultExecution timeMemory
206351TAISA_Detecting Molecules (IOI16_molecules)C++14
100 / 100
72 ms8800 KiB
#include "molecules.h"
#include <bits/stdc++.h>
#define all(v) v.begin(),v.end()
#define eb emplace_back
using namespace std;
using ll=long long;
using P=pair<ll,ll>;
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	vector<P> ws;
	for(int i=0;i<w.size();i++){
		ws.eb(w[i],i);
	}
	sort(all(ws));
	int n=w.size();
	vector<ll> sum(n+1);
	for(int i=0;i<n;i++){
		sum[i+1]=sum[i]+ws[i].first;
	}
	for(ll k=1;k<=n;k++){
		ll mi=sum[k],ma=sum[n]-sum[n-k];
		if(l<=ma&&mi<=u){
			if(ma<=u){
				vector<int> v;
				for(int j=n-k;j<n;j++){
					v.eb(ws[j].second);
				}
				return v;
			}
			ll s=mi;
			for(int i=k;i<n;i++){
				if(l<=s&&s<=u){
					vector<int> v;
					for(int j=i-k;j<i;j++){
						v.eb(ws[j].second);
					}
					return v;
				}
				s+=ws[i].first-ws[i-k].first;
			}
		}
	}
	return vector<int>(0);
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:10: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...