Submission #1021228

#TimeUsernameProblemLanguageResultExecution timeMemory
1021228vjudge1Detecting Molecules (IOI16_molecules)C++17
100 / 100
39 ms5972 KiB
// #pragma once

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n;
ll a[200100];

ll sum(int l, int r){
	return a[r] - a[l-1];
}

std::vector<int> find_subset(int L, int R, std::vector<int> w){
	n = w.size();
	for(int i = 0; i < n; i++){
		a[i+1] = w[i];
	}
	sort(a + 1, a + n + 1);
	for(int i = 1; i <= n; i++){
		a[i] += a[i-1];
	}
	for(int k = 1; k <= n; k++){
		if(max(1ll * L, sum(1, k)) <= min(1ll * R, sum(n - k + 1, n))){
			int i = 1;
			while(sum(i, i + k - 1) < L || sum(i, i + k - 1) > R){
				i++;
			}
			multiset<int> s;
			for(int j = i; j < i + k; j++){
				s.insert(a[j] - a[j-1]);
			}
			vector<int> res;
			for(int i = 0; i < n; i++){
				if(s.count(w[i])){
					s.erase(s.find(w[i]));
					res.push_back(i);
				}
			}
			return res;
		}
	}
	return {};
}
#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...