Cod sursa(job #36479)

Utilizator razvi9Jurca Razvan razvi9 Data 23 martie 2007 16:52:53
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.43 kb
#include<stdio.h>
int n,m,a[200000000],i,j,max,x;
int MAX(int x,int y)
{return x>y?x:y;}
int main()
{freopen("oite.in","r",stdin);
 freopen("oite.out","w",stdout);
 scanf("%d %d",&n,&m);
 if(m>200000000) return 0;
 for(;n;n--)
 {scanf("%d",&x);
  for(j=max;j>=0;j--)
   if(a[j]&&j+x<=m) {a[j+x]+=a[j];max=MAX(max,j+x);}
   else if(j==0&&x<=m) {a[j+x]++;max=MAX(max,x);} }
 printf("%d",a[m]);
 fclose(stdout);
 return 0;}