这个题就是前五个是中国赛区,最后一个是外国赛区,这里给你一个担心的的国家,中国赛区的取数是按照先取前五个赛区的第一再去第二第三这样,不能有重复的,我们要帮worried school看看它能不能进WF,如果对于任意的(x,y)都能使得worried school进WF,就输出“ADVANCED!”。而如果对于一些(x,y)能使得worried school进WF,另一些(x,y)不能,就输出最小的y,这个时候(x,y)恰好使得worried school不能进WF。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <math.h>
#include <stack>
#include <utility>
#include <string>
#include <sstream>
#include <cstdlib>
#include <set>
#define LL long long
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 10000 + 10;
int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
string a[10][100];
string b[100];
int g;
string sch;
int main()
{
int t;
scanf("%d",&t);
int kase = 0;
while(t--)
{
cin>>g>>sch;
for(int i = 1; i <= 5; i++)
{
for(int j = 1; j <= 20; j++)
{
cin>>a[i][j];
}
}
for(int i = 1; i <= 20; i++)
{
cin>>b[i];
}
set<string> q;
int flag1;
int flag2;
int y = -INF;
int x;
for(x = 0; x <= g; x++)
{
q.clear();
flag1 = 0;
flag2 = 0;
if(x > 0)
{
int num = 1;
while(1)
{
for(int k = 1; k <= 5; k++)
{
if(a[k][num] == sch)
flag1 = 1;
q.insert(a[k][num]);
if(q.size() >= x)
{
break;
}
}
num++;
if(q.size() >= x)
break;
}
}
if(g > x)
{
for(int i = 1; i <= 20; i++)
{
if(b[i] == sch)
{
flag2 = 1;
}
q.insert(b[i]);
if(q.size() >= g)
break;
}
}
if(!flag1 && !flag2)
{
//cout<<y<<" "<<x<<endl;
y = g - x;
}
}
if(y != -INF)
cout<<"Case #"<<++kase<<": "<<y<<endl;
else
cout<<"Case #"<<++kase<<": "<<"ADVANCED!"<<endl;
}
return 0;
}