Cod sursa(job #1210466)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 20 iulie 2014 00:35:47
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nextseq.in");
ofstream g("nextseq.out");
int N,M,P;
int Array[10005],Vcar[10005],A[10005],B[10005],one[]={1,1,0};
void Read()
{
    int i;
    f>>N>>M>>P;
    for(i=1;i<=N;i++)
        f>>Array[i];
    sort(Array+1,Array+N+1);
}

void buildVcar()
{
    int i;
    for(i=1;i<=N;i++)
        Vcar[Array[i]]=i;
}

void readAB()
{
    int i;
    for(i=1;i<=M;i++)
    {
        int value;
        f>>value;
        A[i]=Vcar[value];
    }
    for(i=1;i<=P;i++)
    {
        int value;
        f>>value;
        B[i]=Vcar[value];
    }
    reverse(A+1,A+M+1);
    reverse(B+1,B+P+1);
    A[0]=M;
    B[0]=P;
}

void Add()
/* A <- A+B */
{ int i,T=0;

  i=1;
  while(A[i]==N)
{
    A[i]=1;
    ++i;
}
A[i]++;
if(i>A[0])
    A[0]=i;
  if (T) A[++A[0]]=T;
}
bool isEqual()
{
    int i;
    if(A[0]!=B[0])
        return 0;
    for(i=1;i<=A[0];i++)
        if(A[i]!=B[i])
            return 0;
    return 1;
}

void getResult()
{
    int i,result=0;
    bool ok=isEqual();
    while(ok==0)
    {
        Add();
        result++;
        ok=isEqual();
    }
    g<<result-1<<"\n";
}
int main()
{
    Read();
    buildVcar();
    readAB();
    getResult();
    return 0;
}