제출 #572865

#제출 시각아이디문제언어결과실행 시간메모리
572865jasminDetecting Molecules (IOI16_molecules)C++14
31 / 100
29 ms65536 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...