| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1309408 | husseinjuanda | Detecting Molecules (IOI16_molecules) | C++20 | 1 ms | 356 KiB |
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> find_subset(int l, int r, std::vector<int> w){
vector<pair<int, int>> w1;
for(int i = 0; i < w.size(); i++){
w1.push_back({w[i], i});
}
sort(w1.begin(), w1.end());
vector<bool> vis(w.size());
deque<int> d;
int sum = 0;
for(int i = 0; i < w.size(); i++){
w[i] = w1[i].first;
if(sum+w[i] >= l && sum+w[i] <= r){
sum += w[i];
d.push_back(w1[i].second);
break;
}
if(sum+w[i] >= l) break;
vis[i] = true;
sum += w[i];
d.push_back(w1[i].second);
}
for(int i = 0; i < w.size(); i++){
w[i] = w1[i].first;
}
if(sum >= l && sum <= r){
vector<int> ns;
while(d.size() > 0){
ns.push_back(d.back());
d.pop_back();
}
return ns;
}
for(int i = w.size()-1; i >= 0; i--){
if(vis[i]) break;
sum += w[i];
d.push_back(w1[i].second);
sum -= w1[d.front()].first;
d.pop_front();
if(sum >= l && sum <= r){
break;
}
}
vector<int> ns;
if(!(sum >= l && sum <= r)){
return ns;
}
while(d.size() > 0){
ns.push_back(d.back());
d.pop_back();
}
return ns;
}
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... | ||||
