Pagini recente » Cod sursa (job #1139678) | Cod sursa (job #884337) | Cod sursa (job #1619771) | Cod sursa (job #2633880) | Cod sursa (job #1934254)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
const int NMax = 1e4 + 5;
int A[NMax], B[NMax], X[NMax];
inline int Binary(const int &value, int hi) {
int lo = 1;
while(lo <= hi) {
int mid = (lo + hi) >> 1;
if(X[mid] == value) return mid;
if(X[mid] < value) {
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return 1;
}
inline void Increment(const int &lim) {
int t = 1;
for(int i = A[0]; i > 0 && t != 0; i--) {
A[i] += t;
if(A[i] > lim) {
A[i] = 1;
} else {
t = 0;
}
}
if(t != 0) {
A[++A[0]] = 1;
}
}
inline bool Smaller() {
if(A[0] < B[0]) return true;
if(A[0] > B[0]) return false;
for(int i = 1; i <= A[0]; i++) {
if(A[i] > B[i]) return false;
if(A[i] < B[i]) return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
int n, m, p;
fin >> n >> m >> p;
for(int i = 1; i <= n; i++) fin >> X[i];
for(int i = 1; i <= m; i++) fin >> A[i];
for(int i = 1; i <= p; i++) fin >> B[i];
sort(X + 1, X + n + 1);
for(int i = 1; i <= m; i++) A[i] = Binary(A[i], n);
for(int i = 1; i <= p; i++) B[i] = Binary(B[i], n);
A[0] = m; B[0] = p;
Increment(n);
int ans = 0;
while(Smaller()) {
ans++;
Increment(n);
}
fout << ans;
return 0;
}