# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
239257 | urd05 | Detecting Molecules (IOI16_molecules) | C++14 | 1091 ms | 13848 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;
long long dp[10001][170];
bool val(int x,int y) {
return (dp[x][y/64]>>(y%64))&1;
}
vector<int> find_subset(int l, int u,vector<int> w) {
dp[0][0]=1;
for(int i=0;i<w.size();i++) {
int ind=i+1;
for(int j=0;j<=u;j++) {
if (j+w[i]<=u) {
if (val(ind-1,j)) {
dp[ind][(j+w[i])/64]|=(1LL<<((j+w[i])%64));
}
}
if (val(ind-1,j)) {
dp[ind][j/64]|=(1LL<<(j%64));
}
}
}
int n=w.size();
int pos=-1;
for(int i=l;i<=u;i++) {
if (val(n,i)) {
pos=i;
}
}
if (pos==-1) {
vector<int> emp;
return emp;
}
vector<int> ret;
int sum=pos;
for(int i=n-1;i>=0;i--) {
if (sum>=w[i]&&val(i,sum-w[i])) {
ret.push_back(i);
sum-=w[i];
}
}
return ret;
}
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... |