Pagini recente » Cod sursa (job #185194) | Cod sursa (job #419013) | Cod sursa (job #2559608) | Cod sursa (job #3274190) | Cod sursa (job #1320088)
#include <fstream>
using namespace std;
ifstream f("nextseq.in");
ofstream g("nextseq.out");
int a[10001], b[10001], x[10001], A[10001], B[10001], n, m, p, i, j, nr, y, z, s;
void BTab(int k)
{ if (k==m+1) ++s;
else
{ for (int i=a[k]; i<=b[k]; ++i)
{ A[k]=i;
BTab(k+1);
}
}
}
void BTa(int k)
{ if (k==m+1) ++s;
else
{ for (int i=a[k]; i<=nr; ++i)
{ A[k]=i;
BTa(k+1);
a[k]=1;
}
}
}
void BTb(int k)
{ if (k==p+1) ++s;
else
{ for (int i=b[k]; i>=1; --i)
{ B[k]=i;
BTb(k+1);
b[k]=nr;
}
}
}
int main()
{ f>>n>>m>>p;
for (i=1; i<=n; ++i)
{ f>>y;
x[y]=1;
}
for (i=1; i<=10000; ++i)
if (x[i]==1) x[i]=++nr;
for (i=1; i<=m; ++i)
{ f>>y;
a[i]=x[y];
}
for (i=1; i<=p; ++i)
{ f>>y;
b[i]=x[y];
}
if (m>p) g<<0;
else
{ for (i=m+1; i<=p-1; ++i)
{ y=i;
while (y)
{ ++z;
y=y/10;
}
y=1;
for (j=1; j<=z; ++j) y*=nr;
s+=y;
}
if (m==p) BTab(1);
else
{ BTa(1);
BTb(1);
}
}
g<<s-2;
return 0;
}