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>
#include "molecules.h"
using namespace std;
#define int long long
void reconstruct(int x, int i, vector<vector<int> >& last, vector<int32_t>& w, vector<int32_t>& ans){
while(0<x){
ans.push_back(last[x][i]);
int x2=x;
x-=w[last[x][i]];
i=last[x2][i];
}
}
std::vector<int32_t> find_subset(int32_t l, int32_t u, std::vector<int32_t> w) {
int n=w.size();
int r=u;
vector<vector<bool> > dp(r+1, vector<bool> (n+1));
vector<vector<int> > last(r+1, vector<int> (n+1, -1));
dp[0][0]=true;
for(int x=0; x<=r; x++){
for(int i=0; i<n; i++){
if(!dp[x][i]) continue;
dp[x][i+1]=true;
last[x][i+1]=last[x][i];
if(x+w[i]<=r){
dp[x+w[i]][i+1]=true;
last[x+w[i]][i+1]=i;
}
}
}
vector<int32_t> ans;
for(int i=l; i<=r; i++){
if(dp[i][n]){
reconstruct(i, n, last, w, ans);
break;
}
}
return ans;
}
| # | 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... |