Submission #1146714

#TimeUsernameProblemLanguageResultExecution timeMemory
1146714KickingKunDetecting Molecules (IOI16_molecules)C++20
9 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

vector <int> find_subset(int l, int u, vector <int> w) {
	vector <int> ind(w.size()); iota(ind.begin(), ind.end(), 0);
	ll sum = 0; sort (ind.begin(), ind.end(), [&] (int u, int v) {
		return w[u] < w[v];
	});
	for (int x: ind) sum += w[x];
	
	vector <ll> pref(w.size());
	pref[0] = w[ind[0]];
	for (int i = 1; i < w.size(); i++)
		pref[i] = pref[i - 1] + w[ind[i]];
	
	for (int k = 1; k <= w.size(); k++) {
		ll miSum = pref[k - 1], maSum = pref[w.size() - 1] - pref[w.size() - k] + w[ind[w.size() - k]];
		if (miSum <= u && maSum >= l) {
			for (int i = k - 1; i < w.size(); i++) {
				ll sum = pref[i] - pref[i - k + 1] + w[ind[i - k]];
				// change at most max - min <= u - l
				if (l <= sum && sum <= u) {
					vector <int> res;
					for (int j = i - k + 1; j <= i; j++)
						res.emplace_back(ind[j]);
					return res;
				}
			}
		}
	}
	return {};
}

Compilation message (stderr)

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...