您的位置:首页 > 其它

CF 170(div2)B

2013-05-23 13:54 435 查看
B. New Problem

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Coming up with a new problem isn't as easy as many people think. Sometimes it is hard enough to name it. We'll consider a title
original if it doesn't occur as a substring in any titles of recent Codeforces problems.

You've got the titles of n last problems — the strings, consisting of lowercase English letters. Your task is to find the shortest original title for the new problem. If there are multiple such titles, choose the lexicographically
minimum one. Note, that title of the problem can't be an empty string.

A substring s[l...
r] (1 ≤ l ≤ r ≤ |s|) of string
s = s1s2...
s|s| (where
|s| is the length of string s) is string
slsl + 1...
sr.

String x = x1x2...
xp is
lexicographically smaller than string y = y1y2...
yq, if either
p < q and x1 = y1, x2 = y2, ... , xp = yp,
or there exists such number r
(r < p, r < q), that
x1 = y1, x2 = y2, ... , xr = yr
and xr + 1 < yr + 1. The string characters are compared by their ASCII codes.

Input
The first line contains integer n (1 ≤ n ≤ 30) — the number of titles you've got to consider. Then follow
n problem titles, one per line. Each title only consists of lowercase English letters (specifically, it doesn't contain any spaces) and has the length from 1 to 20, inclusive.

Output
Print a string, consisting of lowercase English letters — the lexicographically minimum shortest original title.

Sample test(s)

Input
5
threehorses
goodsubstrings
secret
primematrix
beautifulyear


Output
j


Input
4
aa
bdefghijklmn
opqrstuvwxyz
c


Output
ab


Note
In the first sample the first 9 letters of the English alphabet (a, b, c, d, e, f, g, h, i) occur in the problem titles, so the answer is letter
j.

In the second sample the titles contain 26 English letters, so the shortest original title cannot have length 1. Title
aa occurs as a substring in the first title.


没看出来串的长度最多为2,傻b了。26^2 > 600。顺便膜拜大湿一记,随便就yy出来了d题,卧槽。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <map>
using namespace std;
const int maxn = 100 + 5;
const int INF = 1000000000;

string str;
map<string,int> M;

int main(){
    int n;
    while(cin >> n){
        M.clear();
        for(int k = 0;k < n;k++){
            cin >> str;
            int len = str.length();
            for(int i = 0;i < len;i++){
                for(int j = 1;i+j <= len;j++){
                    string s(str,i,j);
                    M[s] = 1;
                }
            }
        }
        char ss[3];
        int tag = 0;
        for(char i = 'a';i <= 'z';i++){
            ss[0] = i;ss[1] = '\0';
            string s(ss);
            if(M[s] == 0){
                cout << s << endl;
                tag = 1;
                break;
            }
        }
        if(tag == 1) continue;
        for(char i = 'a';i <= 'z';i++){
            ss[0] = i;
            if(tag == 1) break;
            for(char j = 'a';j <= 'z';j++){
                ss[1] = j;ss[2] = '\0';
                string s(ss);
                if(M[s] == 0){
                    cout << s << endl;
                    tag = 1;
                    break;
                }
            }
        }
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: