Cod sursa(job #831866)

Utilizator vlad96Vlad Zuga vlad96 Data 9 decembrie 2012 13:39:10
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

int n, v[10001], v1[100001], v2[10001], p[10001], i, a, nr;

void adunare ()
{
    int i;
    for ( i = 1; i <= v1[0]; i ++ )
    {
        if ( v1[i] == n-1 )
        {
            v1[i] = 0;
        }
        else
            break;
    }
    v1[i] ++;
    if ( i > v1[0] )
    {
        v1[0] ++;
        v1[i] = 0;
    }
}

bool comparare ()
{
    int i;
    for ( i = 1; i <= v2[0]; i ++ )
    {
        if ( v2[i] != v1[i] )
            return 1;
    }
    return 0;
}

int main ()
{
    FILE *fis = fopen ("nextseq.in", "r");

    fscanf(fis, "%d %d %d", &n, &v1[0], &v2[0]);

    for ( i = 1; i <= n; i ++ )
        fscanf(fis, "%d", &v[i]);
    sort(v+1, v+n+1);

    for (i = 1; i <= n; i ++ )
        p[v[i]] = i - 1;

    for ( i = v1[0]; i; i -- )
    {
        fscanf(fis, "%d", &a);
        v1[i] = p[a];
    }
    for ( i = v2[0]; i; i -- )
    {
        fscanf(fis, "%d", &a);
        v2[i] = p[a];
    }

    fclose(fis);

    while ( comparare () )
    {
        adunare();
        nr ++;
    }

    FILE *fis2 = fopen ("nextseq.out", "w");

    fprintf(fis2, "%d\n", nr-1);

    fclose(fis2);

    return 0;
}