Cod sursa(job #5891)

Utilizator mariusdrgdragus marius mariusdrg 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;
}