# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
519794 | yhlas | 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 "bits/stdc++.h"
using namespace std;
vector<int> find_subset(int x, int y, vector<int> v){
int n, e, l, r, md, jog;
vector<int> a,d;
map <int, long long> p;
vector <pair <int, int>> u;
n = v.size();
for (int i = 0; i < n; i++) u.push_back({v[i], i});
sort(u.begin(), u.end());
for (int i = 0; i < n; i++) p[i] = p[i - 1] + u[i].first;
for (int i = 0; i < n; i++){
l = i;
r = n - 1;
jog = -1;
while (l <= r){
md = (l + r) / 2;
if (y < p[md] - p[i - 1]) r = md - 1;
else if (x > p[md] - p[i - 1]) l = md + 1;
else{
e = i; jog = md; break;
}
}
if (jog != -1) break;
}
for (int i = e; i <= jog; i++) a.push_back(u[i].second);
sort(a.begin(), a.end());
return a;
}#include "bits/stdc++.h"
using namespace std;
vector<int> find_subset(int x, int y, vector<int> v){
int n, e, l, r, md, jog;
vector<int> a,d;
map <int, long long> p;
vector <pair <int, int>> u;
n = v.size();
for (int i = 0; i < n; i++) u.push_back({v[i], i});
sort(u.begin(), u.end());
for (int i = 0; i < n; i++) p[i] = p[i - 1] + u[i].first;
for (int i = 0; i < n; i++){
l = i;
r = n - 1;
jog = -1;
while (l <= r){
md = (l + r) / 2;
if (y < p[md] - p[i - 1]) r = md - 1;
else if (x > p[md] - p[i - 1]) l = md + 1;
else{
e = i; jog = md; break;
}
}
if (jog != -1) break;
}
for (int i = e; i <= jog; i++) a.push_back(u[i].second);
sort(a.begin(), a.end());
return a;
}