Submission #1146683

#TimeUsernameProblemLanguageResultExecution timeMemory
1146683KickingKunDetecting Molecules (IOI16_molecules)C++20
0 / 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];
	
	if (sum < l || w[ind.back()] > u) return {};
	
	sum = 0; vector <int> res;
	for (int i = 0; i < w.size(); i++) {
		sum += w[ind[i]]; res.emplace_back(ind[i]);
		if (sum >= l) {
			if (sum <= u) return res;
			else {
				if (sum - w[ind[0]] + w[ind.back()] <= u) {
					res.erase(res.begin()); res.emplace_back(ind.back());
					return res;
				}
				else {
					sum -= w[ind[i]]; res.pop_back();
					res.pop_back();
				}
			}
		}
	}
	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...