Cod sursa(job #951207)

Utilizator enedumitruene dumitru enedumitru Data 19 mai 2013 19:04:46
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nextseq.in"); ofstream g("nextseq.out");
typedef int Mare[10002];
int poz[10002];
Mare x,a,b;
int n,nr=-1;
void add1(Mare V)
{	int t=1;
	++nr;
    for (int i=1; t && i<=V[0]; ++i)
		{	V[i]+=t; 
			if(V[i]>n) V[i]-=n, t=1; else t=0;
		}
	if(t) V[++V[0]]=t;	
}
bool neegal(Mare A, Mare B)
{   if(A[0]!=B[0]) return true;
    for(int i=1; i<= A[0]; ++i)
        if(A[i]!=B[i]) return true;
    return false;
}
int main()
{   f>>n>>a[0]>>b[0];
    for(int i=1; i<=n; ++i) f>>x[i];
	sort(x+1,x+n+1);
	for(int i=1; i<=n; ++i) poz[x[i]]=i;
    for(int q, i=a[0]; i>0; --i) f>>q, a[i]=poz[q];
	for(int q, i=b[0]; i>0; --i) f>>q, b[i]=poz[q];
    while(neegal(a,b)) add1(a);
    g<<nr<<'\n'; g.close(); return 0;
}