· 4 years ago · Jun 25, 2021, 03:54 AM
1// Type your code here, or load an example.
2#include <iostream>
3#include <vector>
4#include <utility>
5#include <algorithm>
6#include <cctype>
7using namespace std;
8
9typedef pair <string,string> email;
10
11email split(string in){
12 int loc = in.find('@');
13 email res;
14 res.first = in.substr(0, loc);
15 transform(res.first.begin(), res.first.end(), res.first.begin(),
16 [](unsigned char c){ return std::tolower(c); });
17 res.second = in.substr(loc+1);
18 transform(res.second.begin(), res.second.end(), res.second.begin(),
19 [](unsigned char c){ return std::tolower(c); });
20 return res;
21}
22
23
24email clear(email in){
25 for(string::iterator it=in.first.begin(); it!=in.first.end(); ++it){
26 int dot_pos = in.first.find('.');
27 //cout << dot_pos << "\t" << in.first <<endl;
28 if(dot_pos > 0) in.first.erase(in.first.begin() + dot_pos);
29 }
30 int plus_pos = in.first.find('+');
31 in.first = in.first.substr(0, plus_pos);
32 //cout << plus_pos << "\t" << in.first << endl;
33 return in;
34}
35
36
37int main(){
38 int count;
39 cin >> count;
40 vector<string> in(count);
41 vector<email> out(count);
42 for(int i = 0; i < count; ++i){
43 string s;
44 cin >> s;
45 in.push_back(s);
46 email cur = split(s);
47 if(cur.second == "gmail.com") cur = clear(cur);
48 out.push_back(cur);
49 cout << cur.first << "\t" << cur.second << endl;
50 }
51
52 sort(out.begin(), out.end(), [](email a, email b) {
53 return a.first > b.first;
54 });
55
56
57 for(a in out)
58 return 0;
59}