Pagini recente » Cod sursa (job #2989107) | Cod sursa (job #2395918) | Cod sursa (job #2449511) | Cod sursa (job #52014) | Cod sursa (job #1842633)
#include <cstdio>
#include <algorithm>
#define MOD 100000000
using namespace std;
int n, m, p, a[10001], x[10001], y[10001], st[10001], st2[10001];
inline bool existasir(){
if(m != p) return 1;
for(int i = 1; i <= m ; ++i)
if(st[i] != st2[i]) return 1;
return 0;
}
inline void adauga(){
int i = m;
++st[i];
while(st[i] > n && i > 0){
st[i] = 1;
--i;
++st[i];
}
if(i == 0) st[++m] = 1;
}
int main()
{
freopen("nextseq.in", "r", stdin);
freopen("nextseq.out", "w", stdout);
scanf("%d%d%d", &n, &m, &p);
for(int i = 1; i <= n ; ++i)
scanf("%d", &a[i]);
for(int i = 1; i <= m ; ++i)
scanf("%d", &x[i]);
for(int i = 1; i <= p ; ++i)
scanf("%d", &y[i]);
sort(a + 1, a + n + 1);
int k = 1;
while(k <= m){
int p = 1, dr = n;
while(p <= dr){
int mij = (p + dr) / 2;
if(a[mij] > x[k]) dr = mij - 1;
else if(a[mij] < x[k]) p = mij + 1;
else {st[k] = mij; break;}
}
++k;
}
k = 1;
while(k <= p){
int st = 1, dr = n;
while(st <= dr){
int mij = (st + dr) / 2;
if(a[mij] > y[k]) dr = mij - 1;
else if(a[mij] < y[k]) st = mij + 1;
else {st2[k] = mij; break;}
}
++k;
}
int sol = 0;
while(existasir()){
++sol;
adauga();
}
printf("%d", sol - 1);
return 0;
}