#include <iostream> #include <vector> using namespace std; int main () { int n; //liczba zabawek chlopcow cin>> n; vector <int> zabawki[26]; //do pamietania pozycji zabawki char alf; //do wczytania chara int lit; //przy zmianie chara na int bool odp = true; //od tego zalezy odpowiedz bool found; //czy znaleziono zabawke na odpowiedniej pozycji for (int i = 0; i < n; i++) //wczytanie pierwszego ciagu zabawek i zapisanie ich pozycji { cin>> alf; if (i % 2 == 0) //jesli na pozycji parzystej { lit = alf - 'a'; zabawki[lit].emplace_back(0); //to wpisz, ze na pozycji parzystej } else //jesli na pozycji nieparzystej { lit = alf - 'a'; zabawki[lit].emplace_back(1); //to wpisz, ze na pozycji nieparzystej } } for (int i = 0; i < n; i++) //wczytujemy kolejny napis { cin>> alf; found = false; //zaczynamy z informacja, ze nie znalezione jeszcze if (i % 2 == 0) //jesli na pozycji parzystej { lit = alf - 'a'; if (zabawki[lit].empty()) //jesli nie ma takiej zabawki w pierwszym ciagu { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } else //jest taka zabawka w pierwszym ciagu { for (auto j = zabawki[lit].begin(); j != zabawki[lit].end(); j++) //sprawdz czy istnieje taka zabawka na odpowiedniej pozycji { if (*j == 0) //jesli jest na pozycji o takiej samej parzystosci { zabawki[lit].erase(j); //wyjmij zabawke z listy, bo juz przyporzadkowana //j = zabawki[lit].end(); //wyjdz z petli po vectorze zabawki found = true; //znalezlismy odpowiednik zabawki break; } } if (!found) //jesli nie znalezlismy { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } } } else //jesli na pozycji nieparzystej { lit = alf - 'a'; if (zabawki[lit].empty()) //jesli nie ma takiej zabawki w pierwszym ciagu { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } else //jest taka zabawka w pierwszym ciagu { for (auto j = zabawki[lit].begin(); j != zabawki[lit].end(); j++) //sprawdz czy istnieje taka zabawka na odpowiedniej pozycji { if (*j == 1) //jesli jest na pozycji o takiej samej parzystosci { zabawki[lit].erase(j); //wyjmij zabawke z listy, bo juz przyporzadkowana //j = zabawki[lit].end(); //wyjdz z petli po vectorze zabawki found = true; //znalezlismy odpowiednik zabawki break; } } if (!found) //jesli nie znalezlismy { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } } } } if (!odp) { cout<< "NIE"; } else //odp == true { cout<< "TAK"; } 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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #include <iostream> #include <vector> using namespace std; int main () { int n; //liczba zabawek chlopcow cin>> n; vector <int> zabawki[26]; //do pamietania pozycji zabawki char alf; //do wczytania chara int lit; //przy zmianie chara na int bool odp = true; //od tego zalezy odpowiedz bool found; //czy znaleziono zabawke na odpowiedniej pozycji for (int i = 0; i < n; i++) //wczytanie pierwszego ciagu zabawek i zapisanie ich pozycji { cin>> alf; if (i % 2 == 0) //jesli na pozycji parzystej { lit = alf - 'a'; zabawki[lit].emplace_back(0); //to wpisz, ze na pozycji parzystej } else //jesli na pozycji nieparzystej { lit = alf - 'a'; zabawki[lit].emplace_back(1); //to wpisz, ze na pozycji nieparzystej } } for (int i = 0; i < n; i++) //wczytujemy kolejny napis { cin>> alf; found = false; //zaczynamy z informacja, ze nie znalezione jeszcze if (i % 2 == 0) //jesli na pozycji parzystej { lit = alf - 'a'; if (zabawki[lit].empty()) //jesli nie ma takiej zabawki w pierwszym ciagu { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } else //jest taka zabawka w pierwszym ciagu { for (auto j = zabawki[lit].begin(); j != zabawki[lit].end(); j++) //sprawdz czy istnieje taka zabawka na odpowiedniej pozycji { if (*j == 0) //jesli jest na pozycji o takiej samej parzystosci { zabawki[lit].erase(j); //wyjmij zabawke z listy, bo juz przyporzadkowana //j = zabawki[lit].end(); //wyjdz z petli po vectorze zabawki found = true; //znalezlismy odpowiednik zabawki break; } } if (!found) //jesli nie znalezlismy { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } } } else //jesli na pozycji nieparzystej { lit = alf - 'a'; if (zabawki[lit].empty()) //jesli nie ma takiej zabawki w pierwszym ciagu { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } else //jest taka zabawka w pierwszym ciagu { for (auto j = zabawki[lit].begin(); j != zabawki[lit].end(); j++) //sprawdz czy istnieje taka zabawka na odpowiedniej pozycji { if (*j == 1) //jesli jest na pozycji o takiej samej parzystosci { zabawki[lit].erase(j); //wyjmij zabawke z listy, bo juz przyporzadkowana //j = zabawki[lit].end(); //wyjdz z petli po vectorze zabawki found = true; //znalezlismy odpowiednik zabawki break; } } if (!found) //jesli nie znalezlismy { odp = false; //znamy juz odpowiedz break; //i = n+1; //wychodzimy z petli } } } } if (!odp) { cout<< "NIE"; } else //odp == true { cout<< "TAK"; } return 0; } |