제출 #411328

#제출 시각아이디문제언어결과실행 시간메모리
411328hibye1217Detecting Molecules (IOI16_molecules)C++17
100 / 100
67 ms6176 KiB
#include "molecules.h"
#include <vector>
#include <algorithm>
#include <iostream>
#define fr first
#define sc second
using ll = long long;
using pii = std::pair<int, int>;
using pll = std::pair<ll, ll>;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
	std::vector<pii> v;
	int n = w.size();
	for (int i = 0; i < n; i++){ v.push_back({ i, w[i] }); }
	sort(v.begin(), v.end(), [](pii a, pii b){
		return a.sc < b.sc;
	});
	ll sum = 0, mn = 1e15;
	for (pll p : v){ sum += p.sc; mn = std::min(mn, p.sc); }
	if (u < mn || sum < l){ return std::vector<int>(); }
	int st = 0, ed = 0; sum = v[0].sc;
	while (1){
		if (l <= sum && sum <= u){
			std::vector<int> res;
			for (int i = st; i <= ed; i++){ res.push_back(v[i].fr); }
			return res;
		}
		if (sum < l){
			if (ed+1 == n){ break; }
			ed += 1;
			sum += v[ed].sc;
		}
		else{
			sum -= v[st].sc;
			st += 1;
		}
	}
	return std::vector<int>();
}
#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...