Submission #74321

#TimeUsernameProblemLanguageResultExecution timeMemory
74321DiuvenDetecting Molecules (IOI16_molecules)C++14
100 / 100
64 ms5552 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;

pair<int, int> A[200010];
int n;
ll S[200010];
vi R;


vi find_subset(int l, int r, vi W){
	n=W.size();
	for(int i=0; i<n; i++) A[i+1]={W[i], i};
	sort(A+1, A+n+1);
	for(int i=1; i<=n; i++) S[i]=S[i-1]+A[i].first;

	for(int len=1; len<=n; len++){
		ll mn=S[len], mx=S[n]-S[n-len];
		if(mx<l || r<mn) continue;
		for(int i=0; i+len<=n; i++){
			ll now=S[i+len]-S[i];
			if(now<l || r<now) continue;
			for(int j=i+1; j<=i+len; j++) R.push_back(A[j].second);
			return R;
		}
		assert(false);
	}
	return R;
}
#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...