AOJ 0572 - Card Game is Fun

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0572

解法

ブルーノが上から取り除く枚数について全通り試す。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 int f(const int *it, const int *ilast, const int *jt, const int *jlast)
 6 {
 7   int c = 0;
 8   for (; it != ilast && jt != jlast; ++it) {
 9     if (*it == *jt) {
10       ++c;
11       ++jt;
12     }
13   }
14   return c;
15 }
16 
17 int main()
18 {
19   int A, B;
20   scanf("%d %d", &A, &B);
21   static int as[5000], bs[5000];
22   for (int i = 0; i < A; i++) {
23     scanf("%d", &as[i]);
24   }
25   for (int j = 0; j < B; j++) {
26     scanf("%d", &bs[j]);
27   }
28 
29   int ans = 0;
30   for (int j = 0; j < B; j++) {
31     ans = max(ans, f(as, as+A, bs+j, bs+B));
32   }
33   printf("%d\n", ans);
34   return 0;
35 }
aoj/0572.cc