Cod sursa(job #5892)
Utilizator | Data | 15 ianuarie 2007 21:54:05 | |
---|---|---|---|
Problema | Zebughil | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.73 kb |
#include<stdio.h>
const int maxn = 100;
int i;
int n;
int a[maxn];
int a1[maxn];
int s[maxn];
int nr[maxn];
int fol;
int t;
int g;
int j;
int ver;
int bkt(int i)
{
if (i<=n)
{
if (n-i+1<fol) return 0;
for(a1[i]=1;a1[i]<=j;a1[i]++)
{
if (ver==1) return 0;
s[a1[i]]+=a[i];
if (s[a1[i]]>g)
{
s[a1[i]]-=a[i];
continue;
}
if (nr[a1[i]]==0) fol--;
nr[a1[i]]++;
bkt(i+1);
nr[a1[i]]--;
s[a1[i]]-=a[i];
if (nr[a1[i]]==0) fol++;
}
}
else
{
for(i=1;i<=n;i++)
if (s[i]>g) return 0;
ver=1;
return 1;
}
}
int main()
{
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
t=3;
while (t)
{
t--;
scanf("%d %d",&n,&g);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
ver=0;
for(j=1;j<=n;j++)
{
fol=j;
bkt(1);
if (ver==1) break;
}
printf("%d\n",j);
}
return 0;
}