Submission #297854

#TimeUsernameProblemLanguageResultExecution timeMemory
297854DovranDetecting Molecules (IOI16_molecules)C++11
31 / 100
149 ms65536 KiB
#include <bits/stdc++.h> #define N 1000009 #define pii pair <int, int> #define ff first #define sz() size() #define ss second #define pb push_back #define ll long long using namespace std; int c[N], n, rsl; vector<int> ans; vector<int> e[N]; int vis[N], v[N]; void dfs(int nd){ // cout<<nd<<'\n'; if(!nd){ rsl=1; return; } for(auto i:e[nd]){ if(!vis[i]){ vis[i]=1; dfs(nd-v[i]); if(!rsl) vis[i]=0; } if(rsl) return; } } vector<int> find_subset(int l, int r, vector<int> w){ n=w.sz(); for(int i=0; i<n; i++) v[i]=w[i]; c[0]=1; for(int i=0; i<n; i++){ for(int j=r; j>=0; j--){ if(c[j]){ c[j+v[i]]=1; e[j+v[i]].pb(i); } } } for(int i=l; i<=r; i++){ if(c[i]){ dfs(i); // cout<<" asd \n"; for(int j=0; j<n; j++) if(vis[j]) ans.pb(j); break; } } return ans; } /* int main(){ int m, l, r, x; vector<int>v; cin>>m>>l>>r; for(int i=0; i<m; i++) cin>>x, v.pb(x); vector<int>asd=find_subset(l, r, v); for(auto i:asd) cout<<i<<' '; }*/
#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...