# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
737309 | Amaarsaa | Detecting Molecules (IOI16_molecules) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//#include "molecules.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> find_subset(int l, int u, vector<int> w) {
ll p, sum, s, j, r, i;
vector < pair < ll, ll > > v;
for ( i = 0; i < w.size(); i ++) v.push_back(make_pair(w[i], i));
sort (v.begin(), v.end());
sort(w.begin(), w.end());
s = 0;
map < ll, ll > a;
a[0] = w[0];
for ( i = 1; i < w.size(); i ++) {
a[i] = a[i - 1] + w[i];
}
vector < int > Ans;
Ans.clear();
for (i = 0; i < w.size(); i ++) {
p = upper_bound(w.begin(), w.end(), w[i] + (u - l)) - w.begin();
p --;
sum = a[p] - a[i - 1];
while (sum > u && p > i) {
sum -= w[p];
p --;
}
if (sum >= l && sum <= u) {
for ( j = i; j <= p; j ++) {
Ans.push_back(v[j].second);
}
break;
}
}
return Ans;
}
int main() {
find_subset(15, 17, {6, 8, 8, 7});
}