| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1304265 | Johan | Detecting Molecules (IOI16_molecules) | C++20 | 1095 ms | 4500 KiB |
#include "molecules.h"
#include "bits/stdc++.h"
using namespace std;
const int N = 2e5 + 5;
int pr[N];
int get(int l, int r){
if(l == 0)return pr[r];
return pr[r] - pr[l - 1];
}
vector < int > find_subset(int l, int u, vector < int > w){
int n = w.size();
map < int , vector < int > > id;
pr[0] = w[0];
for(int i = 1; i < n; i++)
pr[i] = pr[i - 1] + w[i];
for(int i = 0; i < w.size(); i++)
id[w[i]].push_back(i);
sort(w.begin(), w.end());
for(int i = 0; i < n; i++){
int lo = i, hi = n - 1, j = i;
while(hi >= lo){
int mid = (lo + hi) >> 1;
if(w[mid] - w[i] <= u - l){
lo = mid + 1;
j = mid;
}
else hi = mid - 1;
}
int ans = 0;
vector < int > y;
for(int z = i; z <= j; z++){
ans += w[z];
y.push_back(w[z]);
if(ans >= l)break;
}
if(ans >= l && ans <= u){
vector < int > rs;
for(auto i : y){
rs.push_back(id[i].back());
id[i].pop_back();
}
reverse(rs.begin(), rs.end());
return rs;
}
}
return {};
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
