Cod sursa(job #678294)

Utilizator rootsroots1 roots Data 11 februarie 2012 13:14:38
Problema NKPerm Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>

#define maxNK 101

int v[maxNK];
int pre[maxNK];

inline long long f(int v[],int n)
{
    long long ret=1;
    int pre[maxNK];

    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<v[i];++j)
            if(j!=v[i-1])
            {
                pre[i]=j;
                ret+=f(pre,i);
            }
        pre[i]=v[i];
    }

    return ret;
}

int main()
{
    char ch;
    int N,K,T;
    long long cnt;

    freopen("nkperm.in","r",stdin);

    scanf("%d %d %d\n",&N,&K,&T);

    freopen("nkperm.out","w",stdout);

    for(;T--;)
    {
        scanf("%c ",&ch);

        if(ch=='A')
        {
            for(int i=1;i<=N*K;++i)
                scanf("%d%c",&v[i],&ch);

            cnt=0;
            for(int i=1;i<=N*K;++i)
            {
                for(int j=1;j<v[i];++j)
                    if(j!=v[i-1])
                    {
                        pre[i]=j;
                        cnt+=f(pre,i);
                    }
                pre[i]=v[i];
            }

            printf("%lld\n",cnt);
        }
        else
        {
            scanf("%lld",&cnt);
        }
    }

    return 0;
}