#pragma GCC optimize ("O3")
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
char ascii[] = {' ', ' ', ' ', 'a', 'c', 'g', 'o'};
float n, no1 = 0.0;
int med_let;
string word, result;
cin >> n;
cin >> word;
no1 = count(word.begin(), word.end(), '1');
int dif = 0, lower, higher;
med_let = ceil(no1 / n);
for (int i = 0; i < n; i++) {
if (!(med_let <= 6 && med_let >= 3)) {
result = "NIE";
i = n;
}
lower = no1 - (med_let - 1) * (n - i);
higher = (med_let + 1) * (n - i) - no1;
if (lower == higher) {
result += string(n - i, ascii[med_let]);
i = n;
} else if (lower <= n && lower > i) {
result += string(lower - i, ascii[med_let]);
no1 -= med_let * (lower - i);
med_let--;
i = lower - 1;
} else if (higher <= n && higher > i) {
result += string(higher - i, ascii[med_let]);
no1 -= med_let * (lower - i);
med_let++;
i = higher - 1;
} else {
result += string(n - i, ascii[med_let]);
i = n;
}
}
cout << result;
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 | #pragma GCC optimize ("O3") #include <iostream> #include <algorithm> #include <cmath> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); char ascii[] = {' ', ' ', ' ', 'a', 'c', 'g', 'o'}; float n, no1 = 0.0; int med_let; string word, result; cin >> n; cin >> word; no1 = count(word.begin(), word.end(), '1'); int dif = 0, lower, higher; med_let = ceil(no1 / n); for (int i = 0; i < n; i++) { if (!(med_let <= 6 && med_let >= 3)) { result = "NIE"; i = n; } lower = no1 - (med_let - 1) * (n - i); higher = (med_let + 1) * (n - i) - no1; if (lower == higher) { result += string(n - i, ascii[med_let]); i = n; } else if (lower <= n && lower > i) { result += string(lower - i, ascii[med_let]); no1 -= med_let * (lower - i); med_let--; i = lower - 1; } else if (higher <= n && higher > i) { result += string(higher - i, ascii[med_let]); no1 -= med_let * (lower - i); med_let++; i = higher - 1; } else { result += string(n - i, ascii[med_let]); i = n; } } cout << result; return 0; } |
English