Submission #538041

#TimeUsernameProblemLanguageResultExecution timeMemory
538041pavementDetecting Molecules (IOI16_molecules)C++17
100 / 100
61 ms8568 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll P[200005];
pair<ll, ll> act[200005];

vector<int> find_subset(int l, int u, vector<int> w) {
	for (ll i = 0; i < w.size(); i++) act[i] = make_pair(w[i], i);
	sort(act, act + w.size());
	for (ll i = 0; i < w.size(); i++)
		P[i + 1] = P[i] + (ll)act[i].first;
	for (ll i = 1; i <= w.size(); i++) {
		ll lo = 0, hi = i - 1, ans = -1;
		while (lo <= hi) {
			int mid = (lo + hi) >> 1;
			if (P[i] - P[mid] >= (ll)l) ans = mid, lo = mid + 1;
			else hi = mid - 1;
		}
		if (ans != -1 && P[i] - P[ans] <= u) {
			vector<int> v;
			for (ll j = ans; j < i; j++) v.push_back(act[j].second);
			return v;
		}
	}
	return vector<int>();
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:10:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |  for (ll i = 0; i < w.size(); i++) act[i] = make_pair(w[i], i);
      |                 ~~^~~~~~~~~~
molecules.cpp:12:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |  for (ll i = 0; i < w.size(); i++)
      |                 ~~^~~~~~~~~~
molecules.cpp:14:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |  for (ll i = 1; i <= w.size(); i++) {
      |                 ~~^~~~~~~~~~~
#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...