KickStarter 2016 A country leader

KickStarter 2016 A

The Constitution of a certain country states that the leader is the person with the name containing the greatest number of different alphabet letters. (The country uses the uppercase English alphabet from A through Z.) For example, the name GOOGLE has four different alphabet letters: E, G, L, and O. The name APAC CODE JAM has eight different letters. If the country only consists of these 2 persons, APAC CODE JAM would be the leader.

If there is a tie, the person whose name comes earliest in alphabetical order is the leader.

Given a list of names of the citizens of the country, can you determine who the leader is?

Input

The first line of the input gives the number of test cases, T. T test cases follow. Each test case starts with a line with an interger N, the number of people in the country. Then N lines follow. The i-th line represents the name of the i-th person. Each name contains at most 20 characters and contains at least one alphabet letter.

Output

For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the name of the leader.

Limits

1 ≤ T ≤ 100.
1 ≤ N ≤ 100.

Small dataset

Each name consists of at most 20 characters and only consists of the uppercase English letters A through Z.

Large dataset

Each name consists of at most 20 characters and only consists of the uppercase English letters A through Z and ‘ ‘(space).
All names start and end with alphabet letters.

Sample

Input Output

1
2
3
4
5
6
7
8
2
3
ADAM
BOB
JOHNSON
2
A AB C
DEF

1
2
Case #1: JOHNSON
Case #2: A AB C
In sample case #1, JOHNSON contains 5 different alphabet letters(‘H’, ‘J’, ‘N’, ‘O’, ‘S’), so he is the leader.

Sample case #2 would only appear in Large data set. The name DEF contains 3 different alphabet letters, the name A AB C also contains 3 different alphabet letters. A AB C comes alphabetically earlier so he is the leader.

#include <bits/stdc++.h>
#define maxn 115
using namespace std;
int n,cur[30];
int main()
{
	int T;
	scanf("%d",&T);
	int cas=1;
	while(T--)
	{
		scanf("%d",&n);
		getchar();
		string ss="";
		int ans=0;
		for(int i=1;i<=n;i++)
		{
			string s;
			getline(cin,s);
			int len=s.length();
			int cnt=0;
			for(int j=0;j<len;j++)
			{
				if(s[j]==' ') 
				continue;
				if(cur[s[j]-'A'+1]!=i) 
				{
				cur[s[j]-'A'+1]=i;cnt++;
				}
			}
			if(cnt>ans)
			{
				ans=cnt;
				ss=s;
			}
			else if(cnt==ans)
			{
				ss=min(ss,s);
			}
		}
		printf("Case #%d: ",cas++);
		cout<<ss<<endl;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章