fork(35) download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <map>
  5. #include <iterator>
  6. #include <algorithm>
  7.  
  8. template<typename T, size_t S>
  9. T& pick(T(&a)[S]) {
  10. return a[rand() % S];
  11. }
  12.  
  13. std::map<std::string, std::string> cyrillic = {
  14. {"а", "А"}, {"б", "Б"}, {"в", "В"}, {"г", "Г"}, {"д", "Д"},
  15. {"е", "Е"}, {"ё", "Ё"}, {"ж", "Ж"}, {"з", "З"}, {"и", "И"},
  16. {"й", "Й"}, {"к", "К"}, {"л", "Л"}, {"м", "М"}, {"н", "Н"},
  17. {"о", "О"}, {"п", "П"}, {"р", "Р"}, {"с", "С"}, {"т", "Т"},
  18. {"у", "У"}, {"ф", "Ф"}, {"х", "Х"}, {"ц", "Ц"}, {"ч", "Ч"},
  19. {"ш", "Ш"}, {"щ", "Щ"}, {"ъ", "Ъ"}, {"ы", "Ы"}, {"ь", "Ь"},
  20. {"э", "Э"}, {"ю", "Ю"}, {"я", "Я"}
  21. };
  22.  
  23. std::string cyrillic_toupper(std::string s) {
  24. if(cyrillic.find(s) == cyrillic.end())
  25. throw 1;
  26. return cyrillic[s];
  27. }
  28.  
  29. const char *a[] = {"педальн", "помойн", "фекальн", "петушин", "обоссанн", "обосранн", "пидорнут"};
  30. const char *b[] = {"моче", "кало"};
  31. const char *c[] = {"подтирач", "навозач", "блевач", "педальчан", "залупач", "обоссач", "обосрач", "барак", "туалет", "унитаз", "петушач", "курятник", "глотач", "харкач", "дристач"};
  32. const char *d[] = {"параша", "подмывальня", "канава", "обиженка", "помойка"};
  33.  
  34. const char *tpl[] = {
  35. "%w%%a%ый %b%%c%",
  36. "%w%%a%ая %b%%d%",
  37. "%a%о%a%ый %w%%c%",
  38. "%a%о%a%ая %w%%d%",
  39. "%a%ый %w%%c%",
  40. "%a%ая %w%%d%"
  41. };
  42.  
  43. int main() {
  44. srand(time(NULL));
  45.  
  46. std::string word;
  47. std::cin >> word;
  48. word.erase(std::remove(word.begin(), word.end(), '%'), word.end());
  49. if(word.empty())
  50. return 1;
  51.  
  52. std::vector<std::string> res;
  53.  
  54. for(int i = 0; i < 100; i++) {
  55. std::string str = pick(tpl);
  56.  
  57. std::string::size_type pos = 0;
  58. while((pos = str.find('%', pos)) != std::string::npos) {
  59. switch(str[pos + 1]) {
  60. case 'a': str.replace(pos, 3, pick(a)); break;
  61. case 'b': str.replace(pos, 3, pick(b)); break;
  62. case 'c': str.replace(pos, 3, pick(c)); break;
  63. case 'd': str.replace(pos, 3, pick(d)); break;
  64. case 'w': str.replace(pos, 3, word); break;
  65. }
  66. pos++;
  67. }
  68.  
  69. if(std::find(res.begin(), res.end(), str) != res.end()
  70. || str.compare((str.find(' ') / 2) - 3, 2, "о") != std::string::npos) {
  71. i--;
  72. continue;
  73. }
  74.  
  75. str.replace(0, 2, cyrillic_toupper(str.substr(0, 2)));
  76.  
  77. res.push_back(str);
  78. }
  79.  
  80. std::copy(
  81. res.begin(),
  82. res.end(),
  83. std::ostream_iterator<std::string>(std::cout, "\n")
  84. );
  85.  
  86. return 0;
  87. }
  88.  
Success #stdin #stdout 0s 3072KB
stdin
сырно
stdout
сырнопетушиная калообиженка
фекальнообоссанная сырнообиженка
обосранный сырнохаркач
сырнопидорнутый мочеобосрач
сырнопетушиная мочеканава
обоссанный сырнопедальчан
сырнообосранный калодристач
помойнопетушиный сырнопетушач
сырнопедальная мочепомойка
обоссанная сырнообиженка
сырнопидорнутая калоподмывальня
обосранный сырнобарак
сырнопетушиная калопомойка
педальная сырнообиженка
сырнофекальный мочепетушач
пидорнутофекальная сырнообиженка
помойная сырноподмывальня
помойный сырнохаркач
обосранная сырнообиженка
сырнопидорнутая калопомойка
пидорнутая сырнопараша
сырнофекальная калопомойка
фекальный сырнозалупач
педальная сырноподмывальня
пидорнутая сырноканава
пидорнутопетушиный сырнотуалет
сырнофекальная калопараша
пидорнутый сырнотуалет
пидорнутопедальная сырнопомойка
фекальнообосранная сырноподмывальня
сырнопидорнутый калокурятник
обосранная сырноканава
сырнопетушиная мочеобиженка
пидорнутопедальный сырнотуалет
обоссаннопомойная сырноподмывальня
сырнофекальная мочеобиженка
обоссаннофекальный сырноблевач
фекальный сырнохаркач
обосранный сырнонавозач
педальная сырнопараша
сырнопедальная мочеобиженка
сырнообосранная калообиженка
помойный сырнобарак
сырнообосранная мочеподмывальня
сырнопидорнутая мочеобиженка
обосранный сырноблевач
педальный сырнодристач
педальная сырноканава
фекальная сырнопомойка
педальный сырнозалупач
помойный сырнотуалет
пидорнутофекальный сырнодристач
петушинопидорнутый сырноблевач
фекальная сырнопараша
сырнопетушиный мочекурятник
сырнообоссанный мочебарак
петушинообосранная сырноканава
сырнопетушиная мочепомойка
обосранный сырноподтирач
фекальный сырнообоссач
помойный сырнонавозач
сырнофекальный калохаркач
сырнопедальная калообиженка
пидорнутый сырнозалупач
помойная сырнообиженка
сырнофекальный мочезалупач
обосраннопомойный сырнокурятник
петушинообосранная сырнопомойка
фекальнообосранная сырнообиженка
помойнопетушиная сырноканава
сырнопидорнутая мочеканава
педальнопидорнутый сырнобарак
сырнопедальный калоподтирач
сырнофекальная калообиженка
пидорнутопедальная сырноподмывальня
помойный сырнопедальчан
пидорнутая сырноподмывальня
сырнопедальный мочеунитаз
фекальная сырнообиженка
сырнофекальная калоканава
помойный сырноподтирач
обоссанный сырнообосрач
сырнопидорнутый калопетушач
сырнообосранная калопомойка
фекальнообосранный сырноблевач
сырнопедальный калозалупач
сырнопедальная калопомойка
фекальнопомойный сырнотуалет
педальный сырнопедальчан
обосраннофекальная сырнообиженка
сырнообоссанный мочедристач
пидорнутопетушиный сырноунитаз
помойный сырнообоссач
сырнопедальная мочеканава
педальный сырнобарак
сырнообоссанная калопараша
сырнообосранная мочепараша
педальный сырнопетушач
обоссанная сырнопараша
сырнопетушиный калодристач