Cod sursa(job #951190)

Utilizator enedumitruene dumitru enedumitru Data 19 mai 2013 18:43:01
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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,m,p,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>>m>>p;
    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=1; i<=m; ++i) f>>q, a[i]=poz[q];
	reverse(a+1, a+m+1); a[0]=m;
    for(int q, i=1; i<=p; ++i) f>>q, b[i]=poz[q];
    reverse(b+1, b+p+1); b[0]=p;
	while(neegal(a,b)) add1(a);
    g<<nr<<'\n'; g.close(); return 0;
}