Pagini recente » Cod sursa (job #849192) | Cod sursa (job #2187258) | Cod sursa (job #893660) | Cod sursa (job #3336849) | Cod sursa (job #3324147)
#include <fstream>
#include <algorithm>
#define nmax (int)(1e4+1)
using namespace std;
ifstream cin("nextseq.in");
ofstream cout("nextseq.out");
int n,m,p,v[nmax],a[nmax],b[nmax],sol;
int cb(int x){
int st=1,dr=n;
while(st<=dr){
int mid=(st+dr)/2;
if(v[mid]==x)
return mid;
else if(v[mid]>x)
dr=mid-1;
else
st=mid+1;
}
return 0;
}
bool verif(){
if(m<p)
return 1;
if(m>p)
return 0;
for(int i=1;i<=m;i++)
if(a[i]<b[i])
return 1;
else if(a[i]>b[i])
return 0;
return 0;
}
void next(){
for(int i=m;i>0;i--)
if(a[i]==n)
a[i]=1;
else{
a[i]++;
return;
}
/// nu am gasit nimic => trec la un sir cu mai multe valori
m++;
for(int i=1;i<=m;i++)
a[i]=1;
}
int main()
{
cin>>n>>m>>p;
for(int i=1;i<=n;i++)
cin>>v[i];
sort(v+1,v+n+1);
for(int i=1;i<=m;i++){
cin>>a[i];
a[i]=cb(a[i]);
}
for(int i=1;i<=p;i++){
cin>>b[i];
b[i]=cb(b[i]);
}
bool ok=verif();
while(ok){
sol++;
next();
ok=verif();
}
cout<<sol-1;
return 0;
}