Cod sursa(job #218808)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 3 noiembrie 2008 18:05:45
Problema NextSeq Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#define N 10005

int v[N],a[N],b[N],y[N],A[N],s1[N],s2[N];
int m,n,p,max;

void citire(){
	int i,k=0;
	scanf("%d%d%d",&n,&p,&m);
	for(i=1;i<=n;++i){
		scanf("%d",&y[i]);
		++v[y[i]];
		if(y[i]>max)
			max=y[i];
	}
	for(i=1;i<=max;++i)
		if(v[i]){
			A[i]=++k;
		}
	s1[0]=p;
	s2[0]=m;
	for(i=p;i>=1;--i){
		scanf("%d",&a[i]);
		s1[i]=A[a[i]];
	}
	for(i=m;i>=1;--i){
		scanf("%d",&b[i]);
		s2[i]=A[b[i]];
	}
}

void scadere(){
	int i,t=0;
	for(i=1;i<=s2[0];++i)
	{
		if(s2[i]<s1[i]+t)
		{
			s2[i]=s2[i]+n-s1[i]-t;
			t=1;
		}
		else
		{
			s2[i]-=s1[i]+t;
			t=0;
		}
	}		
		//s2[i]+=(t=(s2[i]-=s1[i]+t)<0)*n;
	for(;s2[0]>1&&!s2[s2[0]];--s2[0]);
}

int main(){
	int s=0;
	freopen("nextseq.in","r",stdin);
	freopen("nextseq.out","w",stdout);
	citire();
	scadere();
	int i,r=1;
	for(i=1;i<=s2[0];++i){
		s+=s2[i]*r;
		r*=n;
	}
	printf("%d\n",s-1);
	fclose(stdin);
	fclose(stdout);
	return 0;
}