module main; // https://kmjp.hatenablog.jp/entry/2015/04/29/0930 より // 貪欲法 import std; void main() { // 入力 int N = readln.chomp.to!int; int A = readln.chomp.to!int; auto BB = readln.split.to!(int[]); int C = readln.chomp.to!int; auto DD = readln.split.to!(int[]); // 答えの計算 int[] B, D; int ret = 0; while (N--) { if (B.empty) B = BB.dup; if (D.empty) D = DD.dup; B.sort; D.sort; // A君が勝てる場合、A君は勝てるうち最弱のカードをだし、C君はそれに負ける最強のカードを消費する。 // どうカードを出しても勝てない場合、A君は最弱、C君は最強のカードを消費する。 bool win = false; foreach (x; 0 .. B.length.to!int) { foreach_reverse (y; 0 .. D.length.to!int) { if (B[x] <= D[y]) continue; ret++; win = true; B = B.remove(x); D = D.remove(y); break; } if (win) break; } if (!win) { B = B.remove(0); D = D.remove(D.length - 1); } } // 答えの出力 writeln(ret); }