#include <bits/stdc++.h> using namespace std; int n; int ones = 0; int zeros = 0; char ones_to_letter[] = {'#', '#', '#', 'a', 'c', 'g', 'o'}; // rozwiązanie istnieje gdy liczbę jedynek da się zapisać jako sumę 3,4,5,6 i tych elementów ma być dokładnie n //'a' - 3 jedynki, 'c' - 4 jedynki, 'g' - 5 jedynek, 'o' - 6 jedynek, na 7 jedynek nic nie ma // X = 3*n + coś (c*1 + g*) // Zacznijmy od usunięcia 3*n od X i zobaczmy co zostało // Tych elementów już może być mniej niż n - możemy zachłannie zdejmować void sol(){ cin >> n; string input; cin >> input; for(int i = 0; i < 8*n; i++){ ones += input[i] == '1' ? 1 : 0; } if(ones < 3*n || ones > 6*n){ cout << "NIE" << endl; return; } ones -= 3*n; vector<int>letters(n, 3); int i = 0; while(ones > 3){ ones -= 3; letters[i] += 3; i++; } letters[i] += ones; for(int i = 0; i < n; i++){ cout << ones_to_letter[letters[i]]; } cout << endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); sol(); }
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 | #include <bits/stdc++.h> using namespace std; int n; int ones = 0; int zeros = 0; char ones_to_letter[] = {'#', '#', '#', 'a', 'c', 'g', 'o'}; // rozwiązanie istnieje gdy liczbę jedynek da się zapisać jako sumę 3,4,5,6 i tych elementów ma być dokładnie n //'a' - 3 jedynki, 'c' - 4 jedynki, 'g' - 5 jedynek, 'o' - 6 jedynek, na 7 jedynek nic nie ma // X = 3*n + coś (c*1 + g*) // Zacznijmy od usunięcia 3*n od X i zobaczmy co zostało // Tych elementów już może być mniej niż n - możemy zachłannie zdejmować void sol(){ cin >> n; string input; cin >> input; for(int i = 0; i < 8*n; i++){ ones += input[i] == '1' ? 1 : 0; } if(ones < 3*n || ones > 6*n){ cout << "NIE" << endl; return; } ones -= 3*n; vector<int>letters(n, 3); int i = 0; while(ones > 3){ ones -= 3; letters[i] += 3; i++; } letters[i] += ones; for(int i = 0; i < n; i++){ cout << ones_to_letter[letters[i]]; } cout << endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); sol(); } |