# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
114533 | 2019-06-01T16:42:12 Z | ly20 | Detecting Molecules (IOI16_molecules) | C | 0 ms | 0 KB |
#include "molecules.h" using namespace std; const int MAXN=11234; int resp[MAXN],kn[MAXN]; int find_subset(int l,int u,int w[],int n,int result[]) { for(int i=0;i<MAXN;i++) { kn[i]=-1; } kn[0]=-2; for(int i=0;i<n;i++) { for(int j=MAXN-1;j>=w[i];j--) { if(kn[j-w[i]]!=-1 && kn[j]==-1)kn[j]=i; } } int val=-1; for(int i=l;i<=u;i++) { if(kn[i]!=-1)val=i; } if(val==-1)return 0; int cont=0; while(val>0) { result[cont]=kn[val]; val-=w[kn[val]]; cont++; } for(int i=0;i<cont;i++)resp[i]=result[i]; return 0; }