Cod sursa(job #36479)
Utilizator | 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;}