Cod sursa(job #1647744)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 10 martie 2016 21:55:00
Problema NextSeq Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm>
#define nmax 10025
using namespace std;
int n,m,p,k,v[nmax],a[nmax],b[nmax];
int s[nmax],sol[nmax];


int binarysearch(int j)
{
    int p=0;
    for (int bit=1<<13;bit;bit>>=1)
        if (p+bit<=n&&j>=v[p+bit])
            p+=bit;
    return p;
}
int main()
{
    int i,j,t;
    freopen("nextseq.in","r",stdin);
    freopen("nextseq.out","w",stdout);
    scanf("%d %d %d",&n,&m,&p);
    for (i=1;i<=n;i++)
        scanf("%d",&v[i]);
    sort(v+1,v+n+1);
    k=max(m,p);
    for (i=1;i<=m;i++) {
        scanf("%d",&j);
        s[i+k-m]-=binarysearch(j);
    }
    for (i=1;i<=p;i++) {
        scanf("%d",&j);
        s[i+k-p]+=binarysearch(j);
    }
    s[k]--;
    sol[0]=1;
    for (i=1;i<=k;i++) {
        for (j=1;j<=sol[0];j++)
            sol[j]*=n;
        sol[1]+=s[i];
        for (j=1;j<=sol[0]||sol[j]>9;j++)
            if (sol[j]>9) {
                sol[j+1]+=sol[j]/10;
                sol[j]%=10;
            }
        if (sol[j])
            sol[0]=max(sol[0],j);
    }
    for (i=sol[0];i>=1;i--)
        printf("%d",sol[i]);
    return 0;
}