Pagini recente » Cod sursa (job #3248372) | Cod sursa (job #2816952) | Cod sursa (job #1295391) | Cod sursa (job #501617) | Cod sursa (job #307796)
Cod sursa(job #307796)
#include<stdio.h>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
FILE*fin=fopen("nextseq.in","r");
FILE*fout=fopen("nextseq.out","w");
#define nm 10005
int a[nm],b[nm],c[nm],wh[nm],dc,indice,n,m,p;
vector<int> v;
int comp(int d1,int s1[],int d2,int s2[])
{
if(d1>d2) return 0;
if(d1<d2) return 1;
int i;
for(i=1;i<=d1;i++)
if(s1[i]<s2[i]) return 1;
else if(s1[i]>s2[i]) return 0;
return 0;
}
void get_next()
{
int poz,i;
while(indice)
{
poz=wh[c[indice]];
if(poz==n)
{
indice--;
continue ;
}
c[indice]=v[poz+1];
for(i=indice+1;i<=dc;i++)
c[i]=v[1];
indice=dc;
return ;
}
dc++;
indice=dc;
for(int i=1;i<=dc;i++) c[i]=v[1];
}
int main()
{
int i,nr,rez;
fscanf(fin,"%d%d%d",&n,&m,&p);
for(i=1;i<=n;i++)
{
fscanf(fin,"%d",&nr);
v.push_back(nr);
}
v.push_back(-1);
sort(v.begin(),v.end());
for(i=1;i<=n;i++)
wh[v[i]]=i;
rez=0;
for(i=1;i<=m;i++)
fscanf(fin,"%d",&c[i]);
for(i=1;i<=p;i++)
fscanf(fin,"%d",&b[i]);
dc=m;
indice=dc;
get_next();
while(1)
{
if(comp(dc,c,p,b))
{
rez++;
get_next();
}
else break;
}
fprintf(fout,"%d",rez);
fclose(fin);
fclose(fout);
return 0;
}