fork download
  1. #include<iostream>
  2. #include<cmath>
  3. #include<algorithm>
  4. #include<iomanip>
  5. #include<climits>
  6. #include<numeric>
  7. #include<set>
  8. #include<sstream>
  9. #include<map>
  10. #include<vector>
  11. #include<string>
  12.  
  13. using namespace std;
  14.  
  15. vector<string> split(string haystack, string needle) {
  16. vector<string> result;
  17. int start_pos = 0;
  18. int found_pos = haystack.find(needle, start_pos);
  19. while (found_pos != string::npos) {
  20. int count = found_pos - start_pos;
  21. string token = haystack.substr(start_pos, count);
  22. if (!token.empty()) {
  23. result.push_back(token);
  24. }
  25. start_pos = found_pos + needle.length();
  26. found_pos = haystack.find(needle, start_pos);
  27. }
  28. string token = haystack.substr(start_pos, haystack.length()-start_pos);
  29. if (!token.empty()) {
  30. result.push_back(token);
  31. }
  32. return result;
  33. }
  34. string nameConvert(const string& name) {
  35. const string DELIMITER = " ";
  36. stringstream builder;
  37. auto parts = split(name, DELIMITER);
  38. for (auto part : parts) {
  39. part[0] = toupper(part[0]);
  40. transform(part.begin()+1, part.end(),part.begin()+1, ::tolower);
  41. builder << part << DELIMITER;
  42. }
  43. return builder.str();
  44. }
  45. string dateConvert(const string& date) {
  46. const string DELIMITER = "/";
  47. stringstream builder;
  48. auto parts = split(date, DELIMITER);
  49. builder << setw(2) << setfill('0') << parts[0] << DELIMITER;
  50. builder << setw(2) << setfill('0') << parts[1] << DELIMITER;
  51. builder << parts[2];
  52. return builder.str();
  53.  
  54. }
  55.  
  56. map<string, int> mp;
  57. string email(string name) {
  58. transform(name.begin(), name.end(), name.begin(), ::tolower);
  59. stringstream builder;
  60. auto parts = split(name, " ");
  61. builder << parts.back();
  62. for (int i = 0;i < parts.size() - 1;i++) {
  63. builder << parts[i][0];
  64. }
  65.  
  66. string tmp = builder.str();
  67. mp[tmp]++;
  68. if (mp[tmp] > 1) {
  69. builder << mp[tmp];
  70. }
  71. builder << "@xyz.edu.vn";
  72. return builder.str();
  73. }
  74.  
  75. string password(string date) {
  76. auto parts = split(date, "/");
  77. stringstream builder;
  78. for (auto part : parts) {
  79. builder << stoi(part);
  80. }
  81. return builder.str();
  82. }
  83. int main() {
  84. int query;cin >> query;
  85. cin.ignore();
  86. for (int i = 0;i < query;i++) {
  87. string line;getline(cin, line);
  88. auto parts = split(line, " ");
  89. string dob = parts.back();
  90. stringstream builder;
  91. for (int i = 0;i < parts.size() - 1;i++) {
  92. builder << parts[i] << " ";
  93. }
  94. string name = builder.str();
  95. cout << email(name) << " " << password(dob) << endl;
  96. }
  97. }
  98.  
  99.  
Success #stdin #stdout 0.01s 5312KB
stdin
Standard input is empty
stdout
Standard output is empty