Pagini recente » Cod sursa (job #1348345) | Cod sursa (job #1348315) | Cod sursa (job #1599345) | Cod sursa (job #2987947) | Cod sursa (job #657496)
Cod sursa(job #657496)
#include<iostream>
#include<fstream>
using namespace std;
int x[200]={},a[200],b[200],h[200],st[200];
int init(int);
int valid(int,int,int,int);
int succesor(int,int);
int solutie(int,int);
int afisare(int);
int main()
{
int i,j,n,m,p,v,s,aux,k,contor=0;
fstream f("nextseq.in",ios::in);
f>>n>>m>>p;
for(i=1;i<=n;i++)
f>>x[i];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(x[i]>x[j])
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
for(i=1;i<=m;i++)
f>>a[i];
for(i=1;i<=p;i++)
f>>b[i];
f.close();
for(i=m ;i<=p;i++)
{
k=1;
init(k);
while(k>0)
{
do
{
s=succesor(k,n);
if(s)
{
v=valid(k,p,m,i);
}
}
while(!((s&&v)||(!s)));
if(s)
{
if(solutie(k,i))
{
contor++;
}
else
{
k++;
init(k);
}
}
else
k--;
}
}
contor--;
fstream g("nextseq.out",ios::out);
g<<contor;
g.close();
}
int init(int k)
{
h[k]=0;
st[k]=x[h[k]];
return 1;
}
int succesor(int k,int n)
{
if(h[k]<n)
{
h[k]++;
st[k]=x[h[k]];
return 1;
}
else
return 0;
}
int valid(int k,int p,int m,int i)
{
if((k==m)&&(i==m))
{
int j,q=1;
for(j=1;j<=m;j++)
if(st[j]<a[j])
q=0;
return q;
}
else
{
if(k<p)
return 1;
else
if(k==p)
{
int j,q=1;
for(j=1;j<=p;j++)
{
if(st[j]>b[j])
q=0;
}
return q;
}
else
return 0;
}
}
int solutie(int k,int i)
{
if(k==i)
return 1;
else
return 0;
}
int afisare(int k)
{
int i;cout<<endl;
for(i=1;i<=k;i++)
cout<<st[i]<<" ";
return 1;
}