Pagini recente » Cod sursa (job #1909475) | Cod sursa (job #3250992) | Cod sursa (job #2203128) | Cod sursa (job #1442413) | Cod sursa (job #1599555)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
const int nmax= 10000;
int a[nmax+1], b[nmax+1], c[nmax+1], ind[nmax+1], f[nmax+1];
bool cmp( int x, int y ) {
return a[x]<a[y];
}
bool check( int m ) {
for ( int i= 1; i<=m; ++i ) {
if ( b[i]<c[i] ) {
return 1;
}
}
return 0;
}
int main( ) {
int n, m, p;
fin>>n>>m>>p;
for ( int i= 1; i<=n; ++i ) {
fin>>a[i];
ind[i]= i;
}
sort( a+1, a+n+1 );
sort( ind+1, ind+n+1, cmp );
for ( int i= 1; i<=n; ++i ) {
f[a[i]]= ind[i];
}
for ( int i= 1; i<=m; ++i ) {
fin>>b[i];
b[i]= f[b[i]];
}
for ( int i= 1; i<=p; ++i ) {
fin>>c[i];
c[i]= f[c[i]];
}
int sol= 0;
while ( 1 ) {
int ok= 0;
for ( int i= m; i>=1 && ok==0; --i ) {
if ( b[i]<n ) {
++b[i];
ok= 1;
} else {
b[i]= 1;
}
}
if ( ok==0 ) {
++m;
b[m]= 1;
}
if ( m<p || check(m) ) {
++sol;
} else {
break;
}
}
fout<<sol<<"\n";
return 0;
}