Submission #951860

#TimeUsernameProblemLanguageResultExecution timeMemory
951860karpatkaDetecting Molecules (IOI16_molecules)C++17
100 / 100
42 ms7248 KiB
#include <bits/stdc++.h>
#include "molecules.h"

using i64 = long long;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	int n = int(w.size());

	std::vector<std::pair<int, int>> p(n);
	for (int i = 0; i < n; i++) {
		p[i] = {w[i], i};
	}

	std::sort(p.begin(), p.end());

	std::vector<i64> pref(n + 1);
	for (int i = 0; i < n; i++) {
		pref[i + 1] = p[i].first + pref[i];
	}

	std::vector<int> ans;

	int lo = 0, hi = 1;
	while (lo != hi && hi <= n) {
		if (l <= pref[hi] - pref[lo] && pref[hi] - pref[lo] <= u) {
			for (int i = lo; i < hi; i++) {
				ans.push_back(p[i].second);
			}
			return ans;
		}

		if (pref[hi] - pref[lo] > u) {
			lo++;
		} else {
			hi++;
		}
	}

	return ans;
}
#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...