# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1204556 | Bui_Quoc_Cuong | Detecting Molecules (IOI16_molecules) | C++20 | 2 ms | 584 KiB |
#include "molecules.h"|
#include <bits/stdc++.h>
using namespace std;
/*
tìm tập i1, i2, ... , im
L <= wi1 + wi2 + ... + wim <= R
wmax - wmin <= R - L
*/
bitset <(int)5e5> dp;
vector<int> find_subset(int L,int R,vector<int> w)
{
int n = w.size()-1;
dp[0] = 1;
for(int i=0;i<=n;i++)
{
dp|= dp << w[i];
}
vector<pair<int,int>> wec;
for(int i=0;i<=n;i++) wec.push_back({w[i], i});
sort(wec.begin(),wec.end());
int sum=-1;
for(int i=L;i<=R;i++)
{
if(dp.test(i))sum=i;
}
vector<int> res;
for(int i=n;i>=0;i--)
{
int val=wec[i].first;
int id=wec[i].second;
if(sum>=val && dp.test(sum - val))
{
sum-= val;
res.push_back(id);
}
}
sort(res.begin(),res.end());
return res;
}
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... |