Cod sursa(job #1366823)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 1 martie 2015 13:59:41
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>
int best[1001],nr[1001],cat[1001];
int maxim=0,ct=0;
int main()
{
    freopen ("subsiruri.in","r",stdin);
    freopen ("subsiruri.out","w",stdout);
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&nr[i]);
    best[1]=1;
    maxim=1;
    ct=1;
    cat[1]=1;
    int pos=0;
    for(int i=2;i<=n;i++)
    {
        int maxt=0,cate=1;
        for(int j=i-1;j>=1;j--)
        {
            if(nr[i]>=nr[j])
            {
                if(maxt<best[j])
                {
                    maxt=best[j];
                    cate=cat[j];
                }
                else if(maxt==best[j])
                {
                    cate+=cat[j];
                    cate%=9901;
                }
            }
        }
        cat[i]=cate;
        cat[i]%=9901;
        best[i]=maxt+1;
        if(maxim<best[i])
        {
            maxim=best[i];
        }
    }
   // for(int i=1;i<=n;i++) printf("%d ",best[i]);
    //printf("\n");
    //for(int i=1;i<=n;i++) printf("%d ",cat[i]);
    //printf("\n");
    long long sum=0;
    for(int i=1;i<=n;i++)
    {
        if(maxim==best[i])
        {
            sum+=cat[i];
        }
    }
    printf("%d\n%d\n",maxim,sum);
}