|  | 
|  | 
| back to board | What's wrong with this code?(+) Posted by asif  6 Mar 2003 12:20# include <stdio.h>
 # define N 100
 # define M 100000
 
 int m,n,w[N+1],c[M+1],p[M+1];
 int sum,b[N+1],tot;
 
 int main(void)
 {
 int i,j;
 scanf("%d%d",&m,&n);
 for(i=1;i<=n;i++){
 scanf("%d",&w[i]);
 sum+=w[i];
 }
 m=sum-m;
 c[0]=1;
 for(i=1;i<=n;i++)
 for(j=m;j>=w[i];j--)
 if(c[j-w[i]]>0){
 c[j]+=c[j-w[i]];
 if(c[j]>1) c[j]=2;
 p[j]=i;
 }
 if(m<0 || c[m]==0) printf("0\n");
 else if(c[m]>1) printf("-1\n");
 else{
 j=m;
 while(j>0){
 i=p[j];
 b[i]=1;
 tot++;
 j-=w[i];
 }
 for(i=1;i<=n;i++)
 if(b[i]){
 printf("%d%s",i,tot==1? "\n":" ");
 tot--;
 }
 }
 return 0;
 }
 | 
 | 
|