13460. Passwords
Constraints
Time Limit: 1 secs, Memory Limit: 256 MB
Description
Mirko is an evil plotting genius and has gotten hold of a list of all possible passwords for a certain user account. The first thing he noticed was all the passwords are of odd length. Mirko assumes that the correct password is the one which can be found in
both the original and reverse order in the list. For example, if the word “tulipan” would be the correct password, the word “napilut” has to also appear in the list. Given that both words are correct passwords, Mirko will try to use both, one at a time.
Help Mirko discover what the correct password is and output its length and central character.
Input
The first line of input contains the integer N (1 ≤ N ≤ 100), the number of possible passwords. Each of the following N lines contains a single word, its length being an odd number greater than 2 and lesser than 14. All characters are lowercase letters of the
English alphabet.
Output
The first and only line of output must contain the length of the correct password and its central letter. The solution will be unique.
Sample Input
样例1: 4 las god psala sal 样例2: 4 kisik ptq tttrp tulipan
Sample Output
样例1: 3 a 样例2: 5 s
Hint
Clarification of the first example: The required pair of words is “las” and “sal”. Their length is 3 letters and the central character is ‘a‘.
Clarification of the second example: The word “kisik” can be found in both the original and reverse order on the list (the word is a palindrome), so it is a valid correct password.
Problem Source
2015年每周一赛第一场
#include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; int main() { std::ios::sync_with_stdio(false); int n; cin >> n; vector<string> v(n); for (int i = 0; i < n; i++) cin >> v[i]; for (int i = 0; i < v.size(); i++) { string s = v[i]; reverse(s.begin(), s.end()); for (int j = 0; j < v.size(); j++) { if (s == v[j]) { cout << v[j].size() << " " << v[j][v[j].size() / 2] << endl; return 0; } } } return 0; }