# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
114540 | ly20 | Detecting Molecules (IOI16_molecules) | C++17 | 0 ms | 0 KiB |
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>
#define debug(args...) //fprintf(stderr,args)
#include "molucules.h"
using namespace std;
const int MAXN=112345;
int resp[MAXN],kn[MAXN];
vector<int> find_subset(int l,int u,vector<int> w)
{
int n=w.size();
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;
debug("%d %d\n",i,kn[i]);
}
vector<int> result;
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 result;
}
/*int w[MAXN];
int v[MAXN];
int main()
{
int l,u,n;
scanf("%d %d %d",&l,&u,&n);
int a;
vector<int> w;
for(int i=0;i<n;i++)scanf("%d",&a), w.push_back(a);
find_subset(l,u,w);
for(int i=0;i<n;i++)printf("%d\n",w[resp[i]]);
}*/