Pagini recente » Cod sursa (job #1706732) | Cod sursa (job #945520) | Cod sursa (job #2852512) | Cod sursa (job #3214518) | Cod sursa (job #943534)
Cod sursa(job #943534)
#include<cstdio>
#include<vector>
#include<algorithm>
FILE *f=fopen("nextseq.in","r");
FILE *g=fopen("nextseq.out","w");
using namespace std;
const int NMAX=10005;
int poz[NMAX];
int v[NMAX],v1[NMAX],v2[NMAX];
int n,m,p,Answer;
void Read ( void )
{
fscanf(f,"%d%d%d",&n,&m,&p);
for(int i(1) ; i <= n ; ++i )
{
fscanf(f,"%d",&v[i]);
}
sort(v+1,v+n+1);
for(int i(1) ; i <= n ; ++i )
{
poz[v[i]]=i;
}
for(int i(m) ; i ; --i )
{
int x;
fscanf(f,"%d",&x);
v1[i]=poz[x];
}
for(int i(p) ; i ; --i )
{
int x;
fscanf(f,"%d",&x);
v2[i]=poz[x];
}
fclose(f);
}
void Solve ( void )
{
while( true )
{
int i;
for( i=1 ;i <= m+1 && v1[i] == n ; ++i );
++v1[i];
if( i == m+1)
++m;
for (int ii(i-1) ; ii ; --ii )
v1[ii]=1;
if( m == p)
{
bool some_dif=false;
for(i=p; i ; --i )
{
if( v1[i] != v2[i] )
{
some_dif=true;
if( v1[i] < v2[i] )
{
++Answer;
break;
}
else
{
return;
}
}
}
if( some_dif == false)
return ;
}
else
++Answer;
}
}
void Write ( void )
{
fprintf(g,"%d",Answer);
fclose(g);
}
int main ( void )
{
Read();
Solve();
Write();
return 0;
}