제출 #230991

#제출 시각아이디문제언어결과실행 시간메모리
230991peijarDetecting Molecules (IOI16_molecules)C++17
100 / 100
69 ms8704 KiB
#include <bits/stdc++.h>
using namespace std;

#define SZ(v) ((int)(v).size())
using ll = long long; 

vector<int> find_subset(int l, int r, vector<int> weights)
{
	int nb_poids = SZ(weights);
	vector<ll> prefix_sum(nb_poids+1);
	vector<pair<ll, int> > poids(nb_poids);
	for (int i(0); i < nb_poids; ++i)
		poids[i] = make_pair(weights[i], i);
	sort(poids.begin(), poids.end());
	for (int i(0); i < nb_poids; ++i)
		prefix_sum[i+1] = prefix_sum[i] + poids[i].first;

	for (int taille(1); taille <= nb_poids; ++taille)
		if (prefix_sum[taille] <= r and prefix_sum[nb_poids] - prefix_sum[nb_poids-taille] >= l)
		{
			for (int i_start(0); i_start + taille <= nb_poids; ++i_start)
			{
				ll sum = prefix_sum[i_start + taille] - prefix_sum[i_start];
				if (sum >= l and sum <= r)
				{
					vector<int> ans;
					for (int i(0); i < taille; ++i)
						ans.push_back(poids[i+i_start].second);
					return ans;
				}
			}
		}
	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...