# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
126788 | losmi247 | Detecting Molecules (IOI16_molecules) | C++14 | 17 ms | 14940 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;
typedef long long ll;
typedef pair <int,int> p;
const int N = 2e5+45;
int n,a[N];
p go[105][10002];
p dp[105][10002];
vector <int> sol;
vector <int> find_subset(int l,int u,vector <int> w){
n = w.size();
for(int i = 0; i < n; i++){
a[i+1] = w[i];
}
dp[0][0] = p(1,0);
for(int i = 1; i <= n; i++){
dp[i][0] = p(1,0);
for(int j = 1; j <= 10002; j++){
if(dp[i-1][j].first){
dp[i][j] = p(1,0);
go[i][j] = p(i-1,j);
}
if(j >= a[i] && dp[i-1][j-a[i]].first){
dp[i][j] = p(1,1);
go[i][j] = p(i-1,j-a[i]);
}
//cout << i << " " << j << " " << dp[i][j].first << endl;
}
}
p poc = p(0,0);
for(int j = l; j <= u; j++){
if(dp[n][j].first){
poc = p(n,j);
break;
}
}
while(poc.first){
if(dp[poc.first][poc.second].second){
sol.push_back(poc.first-1);
}
poc = go[poc.first][poc.second];
}
return sol;
}
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... |