#include <iostream> #include <string> using namespace std; bool ZbalansowanePodslowo2(string podslowo) { if (podslowo.size() > 1) { int litery[3] = { 0, 0, 0 }; int a = 0; for (int z = 0; z < podslowo.size(); z++) { if (podslowo[z] == 'a') { litery[0]++; } else if (podslowo[z] == 'b') { litery[1]++; } else if (podslowo[z] == 'c') { litery[2]++; } } for (int z = 0; z < 3; z++) { if (litery[z] > 0) { if (a != 0) { if (a != litery[z]) { return false; } } else { a = litery[z]; } } } } return true; } unsigned int LiczbaZbilansowanychPodslow(string slowo) { unsigned int wynik = 0; if (slowo.size() == 1) { wynik = 1; } else { for (int i = 0; i < slowo.size(); i++) { for (int j = 1; j <= (slowo.size() - i); j++) { string podslowo = slowo.substr(i, j); if ((podslowo.size() == 2) && (podslowo[0] == podslowo[1])) { wynik++; } else if ((podslowo.size() == 3) && ((podslowo[0] == podslowo[1]) && (podslowo[1] == podslowo[2]))) { wynik++; } else if ((podslowo.size() == 4) && ((podslowo[0] == podslowo[1]) && (podslowo[1] == podslowo[2]) && (podslowo[2] == podslowo[3]))) { wynik++; } else if (ZbalansowanePodslowo2(podslowo)) { wynik++; } } } } return wynik; } int main(){ unsigned int wynik = 0; string slowo; char pob_slowo[300000]; const int max_size = 300000; cin.get(pob_slowo, max_size); slowo = pob_slowo; wynik += LiczbaZbilansowanychPodslow(slowo); cout << wynik; return 0;}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <iostream> #include <string> using namespace std; bool ZbalansowanePodslowo2(string podslowo) { if (podslowo.size() > 1) { int litery[3] = { 0, 0, 0 }; int a = 0; for (int z = 0; z < podslowo.size(); z++) { if (podslowo[z] == 'a') { litery[0]++; } else if (podslowo[z] == 'b') { litery[1]++; } else if (podslowo[z] == 'c') { litery[2]++; } } for (int z = 0; z < 3; z++) { if (litery[z] > 0) { if (a != 0) { if (a != litery[z]) { return false; } } else { a = litery[z]; } } } } return true; } unsigned int LiczbaZbilansowanychPodslow(string slowo) { unsigned int wynik = 0; if (slowo.size() == 1) { wynik = 1; } else { for (int i = 0; i < slowo.size(); i++) { for (int j = 1; j <= (slowo.size() - i); j++) { string podslowo = slowo.substr(i, j); if ((podslowo.size() == 2) && (podslowo[0] == podslowo[1])) { wynik++; } else if ((podslowo.size() == 3) && ((podslowo[0] == podslowo[1]) && (podslowo[1] == podslowo[2]))) { wynik++; } else if ((podslowo.size() == 4) && ((podslowo[0] == podslowo[1]) && (podslowo[1] == podslowo[2]) && (podslowo[2] == podslowo[3]))) { wynik++; } else if (ZbalansowanePodslowo2(podslowo)) { wynik++; } } } } return wynik; } int main(){ unsigned int wynik = 0; string slowo; char pob_slowo[300000]; const int max_size = 300000; cin.get(pob_slowo, max_size); slowo = pob_slowo; wynik += LiczbaZbilansowanychPodslow(slowo); cout << wynik; return 0;} |