Submission #160085

#TimeUsernameProblemLanguageResultExecution timeMemory
160085NordwayDetecting Molecules (IOI16_molecules)C++14
31 / 100
117 ms65540 KiB
#include <bits/stdc++.h> #define x first #define y second #define pb push_back #define mp make_pair #define up_b upper_bound #define low_b lower_bound #define sz(x) (int)x.size() #define all(v) v.begin(),v.end() #define nl '\n' #define boost ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<int,ll> pil; typedef pair<ll,int> pli; typedef pair<ll,ll> pll; const ll INF=1e18; const int inf=1e9; const ld eps=1e-7; const ld pi=acos(-1); const int dx[8]={0,0 ,1,-1,1,1,-1,-1}; const int dy[8]={1,-1,0,0,1,-1,1,-1}; const int mod1=998244353; const int mod2=1e9+7; const int N=1e4+11; int dp[N][N]; int a[N]; vector<int> find_subset(int l,int u,vector<int>w){ int n=sz(w); for(int i=1;i<=n;i++){ a[i]=w[i-1]; } dp[0][0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<=u;j++){ if(j>=a[i])dp[i][j]|=dp[i-1][j-a[i]]; dp[i][j]|=dp[i-1][j]; } } int val=-1; for(int i=l;i<=u;i++){ if(dp[n][i]){ val=i; break; } } vector<int>ans; if(val){ while(val>0){ if(dp[n-1][val-a[n]]){ ans.pb(n-1); val-=a[n]; n--; } else if(dp[n-1][val]){ n--; } } } sort(all(ans)); 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...