uva 10635 - Prince and Princess

来源:互联网 发布:郑州财经学院网络下线 编辑:程序博客网 时间:2024/05/05 05:42
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <map>#include <algorithm>#define maxn 250*250 + 10#define ll long long#define INF 1000000000#define FOR(i, a, b) for(int i = a; i < b; ++i)using namespace std;int main(){    int kase = 0, t;    scanf("%d", &t);    while(t--)    {        int n, p, q;        int a[maxn], b[maxn], g[maxn], len_b = 0, num;        scanf("%d%d%d", &n, &p, &q);        memset(a, 0, sizeof(a));        FOR(i, 1, p+2) {scanf("%d", &num); a[num] = i;}        FOR(i, 1, q+2) {            scanf("%d", &num);            if(a[num]) b[len_b++] = a[num];            }        FOR(i, 0, len_b+1) g[i] = INF;        int ans = 0;        int ss[maxn];        FOR(i, 0, len_b){            int k = lower_bound(g+1, g+len_b+1, b[i]) - g;            //ss[i] = k;            g[k] = b[i];            ans = max(ans, k);        }        //FOR(i, 0, len_b) printf("%d ", ss[i]); printf("\n");        printf("Case %d: %d\n", ++kase, ans);    }    return 0;}