Submission #529853

#TimeUsernameProblemLanguageResultExecution timeMemory
529853new_accDetecting Molecules (IOI16_molecules)C++14
100 / 100
50 ms8596 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
const int N=5e5+10;
vi find_subset(int l,int u, vi a){
	vector<pair<int,int> >w;
	for(int i=0;i<a.size();i++) w.push_back({a[i],i});
	int n=w.size();
	w.push_back({0,-1});
	vl pref;
	pref.push_back(0);
	sort(w.begin(),w.end());
	vi res;
	ll mini=w[1].fi;
	for(int i=1;i<=n;i++) w[i].fi-=mini;
	for(int i=1;i<=n;i++) pref.push_back(pref[pref.size()-1]+w[i].fi);
	for(int i=1;i<=n;i++){
		ll nu=u-mini*(ll)i,nl=l-mini*(ll)i;
		if(pref[i]>nu or pref[n]-pref[n-i]<nl) continue;
		ll curr=0;
		for(int j=1;j<=i;j++){
			curr+=w[j].fi;
			res.push_back(w[j].se);
		}
		for(int j=1;j<=i;j++){
			if(curr>=nl) break;
			curr+=w[n-j+1].fi-w[j].fi;
			res[j-1]=w[n-j+1].se;
		}
		sort(res.begin(),res.end());
		return res;
	}
	return res;
}

Compilation message (stderr)

molecules.cpp: In function 'vi find_subset(int, int, vi)':
molecules.cpp:11:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |  for(int i=0;i<a.size();i++) w.push_back({a[i],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...