15#include <unordered_map>
16#include <unordered_set>
38 cin >> p1 >> p2 >> p3 >> p4 >> a >> b;
40 min = p2 < min ? p2 : min;
41 min = p3 < min ? p3 : min;
42 min = p4 < min ? p4 : min;
43 const int ans = min - a < b - a + 1 ? min - a : b - a + 1;
44 cout << (ans < 0 ? 0 : ans);
57 auto arr = vector<int>(len);
59 for(
int i = len - 1; i >= 0; i--) {
64 int sum =
static_cast<int>(pow(2, len));
65 for(
int i = 0; i < len; i++) {
70 sum -=
static_cast<int>(pow(2, len - i - 1));
82 cin >> a >> b >> c >> d;
83 cout <<
"DIFERENCA = " << a * b - c * d;
88 const double pi = 3.14159;
91 cout <<
"A=" << setiosflags(ios::fixed) << setprecision(4) << pi * r * r;
99 cout <<
"MEDIA = " << setiosflags(ios::fixed) << setprecision(5) << (a * 3.5 + b * 7.5) / 11;
108 cout <<
"NUMBER = " << a << endl
109 <<
"SALARY = U$ " << setiosflags(ios::fixed) << setprecision(2) << b * c;
117 cout << setiosflags(ios::fixed) << setprecision(3) << static_cast<float>(x) / y <<
" km/l";
126 cin >> x1 >> y1 >> x2 >> y2;
127 cout << setiosflags(ios::fixed) << setprecision(4) << sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
135 int arr[] = {100, 50, 20, 10, 5, 2, 1};
136 for(
const int i: arr) {
137 cout << n / i <<
" nota(s) de R$ " << i <<
",00";
151 for(
const char c: str) {
159 if(count1 == 7 || count0 == 7) {
171 auto *g =
new int *[
N];
172 for(
int i = 0; i <
N; i++) {
174 for(
int j = 0; j <
N; j++) {
179 for(
int i = 1; i <= n; i++) {
183 for(
int i = 2; i < n; i++) {
184 for(
int j = 2; j < n; j++) {
188 if(g[i][j - 1] == 0) {
190 g[i][j] = g[i - 1][j] + 1;
193 g[i][j] = g[i][j - 1] + 1;
202 for(
int i = 1; i < n; i++) {
204 for(
int j = 1; j < n; j++) {
207 for(
int j = 0; j < n; j++) {
209 g[i][n] = g[n][i] = j;
215 for(
int i = 1; i <= n; i++) {
216 for(
int j = 1; j <= n; j++) {
226 for(
int i = 0; i <
N; i++) {
237 auto s = set<long long>();
239 for(
int i = 0; i < n2.length(); i++) {
241 for(
int j = 0; j < n2.length(); j++) {
242 bool bit = n2[j] !=
'0';
247 val +=
static_cast<long long>(pow(2, n2.size() - j - 1));
253 for(
int n = 1; n <= 2; n++) {
254 for(
int i = 0; i < n3.length(); i++) {
256 for(
int j = 0; j < n3.length(); j++) {
262 val +=
static_cast<long long>(v * pow(3, n3.size() - j - 1));
264 if(s.contains(val)) {
277 const int s = n % 60;
279 const int m = n % 60;
282 cout << h <<
":" << m <<
":" << s;
290 cout <<
"PROD = " << a * b;
295 auto *haystack =
new int[1000010];
296 memset(haystack, 0, 1000010 *
sizeof *haystack);
300 for(
int i = 0; i < k; i++) {
307 for(
int i = 1; i <= n; i++) {
308 haystack[i] += haystack[i - 1];
310 sort(haystack + 1, haystack + n + 1);
311 cout << haystack[(n + 1) / 2];
318 char cowhide[55][55]{};
319 bool occupy[55][55]{};
320 auto edge = unordered_set<point, pointhash, pointequal>();
326 for(
int i = 0; i < n; i++) {
327 for(
int j = 0; j < m; j++) {
328 cin >> cowhide[i][j];
329 if(flag && cowhide[i][j] ==
'X') {
334 occupy[i][j] =
false;
339 flood(first, occupy, &edge, cowhide, n, m);
342 auto nextedge = unordered_set<point, pointhash, pointequal>();
344 for(
const auto p: edge) {
347 point(p.x, p.y - 1)};
348 for(
auto next: nexts) {
349 if(0 <= next.x && next.x <= n && 0 <= next.y && next.y <= m && !occupy[next.x][next.y]) {
350 if(cowhide[next.x][next.y] ==
'X') {
354 cowhide[next.x][next.y] =
'X';
355 occupy[next.x][next.y] =
true;
356 nextedge.insert(next);
362 nextedge = unordered_set<point, pointhash, pointequal>();
371 flood(
point first,
bool occupy[55][55], unordered_set<point, pointhash, pointequal> *edge,
char cowhide[55][55],
373 auto que = queue<point>();
376 while(!que.empty()) {
377 auto p = que.front();
378 if(!eq(p, first) && occupy[p.x][p.y]) {
382 occupy[p.x][p.y] =
true;
384 for(
auto next: nexts) {
385 if(0 <= next.x && next.x <= n && 0 <= next.y && next.y <= m && !occupy[next.x][next.y]) {
386 if(cowhide[next.x][next.y] ==
'X') {
403 auto *field =
new int *[
N + 10];
404 for(
int i = 0; i <
N + 10; i++) {
405 field[i] =
new int[
N + 10];
406 memset(field[i], 0, (
N + 10) *
sizeof(
int));
410 cin >> n >> start_x >> start_y;
414 for(
int i = 0; i < n; i++) {
426 cout <<
bfs(
point(start_x, start_y, 0), field, max_x, max_y);
427 for(
int i = 0; i <
N + 10; i++) {
434 int bfs(
point start,
int **field,
int max_x,
int max_y) {
435 auto que = deque<point>();
436 que.push_front(start);
437 while(!que.empty()) {
438 const auto p = que.front();
441 point(p.x + 1, p.y, p.step),
point(p.x - 1, p.y, p.step),
442 point(p.x, p.y + 1, p.step),
point(p.x, p.y - 1, p.step)};
443 for(
auto next: nexts) {
444 if(next.x == 0 && next.y == 0) {
447 if(0 <= next.x && next.x <= max_x + 2 && 0 <= next.y && next.y <= max_y + 2 &&
448 field[next.x][next.y] != 2) {
449 if(field[next.x][next.y] == 0) {
450 que.push_front(next);
456 field[next.x][next.y] = 2;
471 cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2;
472 cout <<
"VALOR A PAGAR: R$ " << setiosflags(ios::fixed) << setprecision(2) << b1 * c1 + b2 * c2;
479 cout <<
"VOLUME = " << setiosflags(ios::fixed) << setprecision(3) << 4.0 / 3.0 * 3.14159 * r * r * r;
486 auto *above =
new bool[n];
487 auto heights = set<unsigned int>();
488 auto m = map<unsigned int, vector<unsigned int>>();
489 for(
int i = 0; i < n; i++) {
492 heights.insert(height);
494 if(!m.contains(height)) {
495 m[height] = vector<unsigned int>();
497 m[height].push_back(i);
501 for(
auto height: heights) {
502 for(
const auto index: m[height]) {
503 above[index] =
false;
504 if(0 < index && index + 1 < n) {
505 if(above[index - 1] && above[index + 1]) {
507 }
else if(!above[index - 1] && !above[index + 1]) {
510 }
else if(index == 0 && !above[1] || index == n - 1 && !above[n - 2]) {
528 cout <<
"MEDIA = " << setiosflags(ios::fixed) << setprecision(1) << (a * 2 + b * 3 + c * 5) / 10;
537 cout <<
"TRIANGULO: " << setiosflags(ios::fixed) << setprecision(3) << a * c / 2 << endl;
538 cout <<
"CIRCULO: " << setiosflags(ios::fixed) << setprecision(3) << c * c * 3.14159 << endl;
539 cout <<
"TRAPEZIO: " << setiosflags(ios::fixed) << setprecision(3) << (a + b) * c / 2 << endl;
540 cout <<
"QUADRADO: " << setiosflags(ios::fixed) << setprecision(3) << b * b << endl;
541 cout <<
"RETANGULO: " << setiosflags(ios::fixed) << setprecision(3) << a * b;
549 cin >> name >> b >> m;
550 cout <<
"TOTAL = R$ " << setiosflags(ios::fixed) << setprecision(2) << b + 0.15 * m;
559 const int maxab = (a + b + abs(a - b)) / 2;
560 cout << (maxab + c + abs(maxab - c)) / 2 <<
" eh o maior";
565 char horseshoes[5][5];
569 for(
int i = 0; i < n; i++) {
570 for(
int j = 0; j < n; j++) {
571 cin >> horseshoes[i][j];
574 memset(picked, 0,
sizeof picked);
575 if(horseshoes[0][0] ==
')') {
579 cout <<
dfs(
true, horseshoes, picked, 1, 1, 0, 0, n);
583 int acwing2005::dfs(
bool stage,
char horseshoes[5][5],
const bool picked[5][5],
int count,
int level,
int x,
int y,
585 if(level == 0 && !stage) {
592 pair<int, int> nexts[4] = {pair(x - 1, y), pair(x + 1, y), pair(x, y - 1),
595 bool picked_cpy[5][5];
596 memcpy(picked_cpy, picked,
sizeof picked_cpy);
599 picked_cpy[x][y] =
true;
601 for(
const auto next: nexts) {
602 if(0 <= next.first && next.first < n && 0 <= next.second && next.second < n &&
603 !picked_cpy[next.first][next.second]) {
605 if(stage && horseshoes[next.first][next.second] ==
'(') {
606 res =
dfs(
true, horseshoes, picked_cpy, count + 1, level + 1, next.first, next.second, n);
607 }
else if(stage && horseshoes[next.first][next.second] ==
')') {
608 res =
dfs(
false, horseshoes, picked_cpy, count + 1, level - 1, next.first, next.second, n);
609 }
else if(!stage && horseshoes[next.first][next.second] ==
')') {
610 res =
dfs(
false, horseshoes, picked_cpy, count + 1, level - 1, next.first, next.second, n);
623 cout << 2 * l <<
" minutos";
631 cout << setiosflags(ios::fixed) << setprecision(3) << static_cast<double>(t * s) / 12;
639 for(
const char ch: str) {
640 if(ch ==
'4' || ch ==
'7') {
644 if(count == 4 || count == 7) {
655 auto *in_sub =
new bool[str.length()];
657 memset(in_sub, 0, str.length() *
sizeof(
bool));
660 for(
int i = 0; i < str.length(); i++) {
666 for(
int i = prev_left; i < str.length(); i++) {
667 if(str[i] ==
')' && prev_left != -1) {
669 in_sub[prev_left] =
true;
671 for(
int j = prev_left + 1; j < i; j++) {
677 if(in_sub[prev_left]) {
680 }
else if(prev_left == -1 && str[i] ==
'(') {
693 auto records = map<string, trie_node *>();
694 for(
int i = 0; i < n; i++) {
697 if(!records.contains(name)) {
699 records[name] =
new trie_node(-1,
nullptr);
703 for(
int j = 0; j < n2; j++) {
706 string phone_number_trim_left;
707 for(
int k = 0; k < phone_number.length(); k++) {
708 if(phone_number[k] !=
'0') {
709 phone_number_trim_left = phone_number.substr(k);
713 reverse(phone_number_trim_left.begin(), phone_number_trim_left.end());
714 records[name]->insert(phone_number_trim_left);
717 cout << records.size();
718 for(
auto it: records) {
719 cout << it.first <<
" ";
720 cout << it.second->count() <<
" ";
721 it.second->display();
727 if(str.length() == 0) {
730 if(this->
nexts[str[0] -
'0'] ==
nullptr) {
738 for(
auto *next: this->
nexts) {
739 if(next !=
nullptr) {
745 const auto *current =
this;
746 while(current->val != -1) {
747 cout << static_cast<char>(current->val +
'0');
748 current = current->father;
757 for(
auto *next: this->
nexts) {
758 if(next !=
nullptr) {
760 count += next->count();
773 auto names = vector<string>();
775 auto min_names = vector<string>();
776 auto max_names = vector<string>();
779 for(
int i = 0; i < n; i++) {
781 const auto *min_name_const_c_str = names[i].c_str();
782 const auto *max_name_const_c_str = names[i].c_str();
783 auto *min_name_c_str =
new char[names[i].length() + 1];
784 auto *max_name_c_str =
new char[names[i].length() + 1];
785 strcpy(min_name_c_str, min_name_const_c_str);
786 strcpy(max_name_c_str, max_name_const_c_str);
787 sort(min_name_c_str, min_name_c_str + names[i].length() *
sizeof(
char));
788 sort(max_name_c_str, max_name_c_str + names[i].length() *
sizeof(
char),
cmp);
789 const auto min_name = string(min_name_c_str);
790 const auto max_name = string(max_name_c_str);
791 min_names[i] = min_name;
792 max_names[i] = max_name;
793 delete[] min_name_c_str;
794 delete[] max_name_c_str;
796 auto min_names_sorted = vector(min_names);
797 auto max_names_sorted = vector(max_names);
798 sort(min_names_sorted.begin(), min_names_sorted.end());
799 sort(max_names_sorted.begin(), max_names_sorted.end());
800 for(
int i = 0; i < n; i++) {
801 auto min_name = min_names[i];
802 auto max_name = max_names[i];
803 cout << lower_bound(max_names_sorted.begin(), max_names_sorted.end(), min_name) - max_names_sorted.begin() +
806 << upper_bound(min_names_sorted.begin(), min_names_sorted.end(), max_name) - min_names_sorted.begin()
817 int total =
static_cast<int>(n *
static_cast<double>(100));
818 const int denominations[] = {10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1};
820 for(
int i = 0; i < 12; i++) {
821 count[i] = total / denominations[i];
822 total %= denominations[i];
824 cout <<
"NOTAS:" << endl
825 << count[0] <<
" nota(s) de R$ 100.00" << endl
826 << count[1] <<
" nota(s) de R$ 50.00" << endl
827 << count[2] <<
" nota(s) de R$ 20.00" << endl
828 << count[3] <<
" nota(s) de R$ 10.00" << endl
829 << count[4] <<
" nota(s) de R$ 5.00" << endl
830 << count[5] <<
" nota(s) de R$ 2.00" << endl
832 << count[6] <<
" moeda(s) de R$ 1.00" << endl
833 << count[7] <<
" moeda(s) de R$ 0.50" << endl
834 << count[8] <<
" moeda(s) de R$ 0.25" << endl
835 << count[9] <<
" moeda(s) de R$ 0.10" << endl
836 << count[10] <<
" moeda(s) de R$ 0.05" << endl
837 << count[11] <<
" moeda(s) de R$ 0.01";
844 cout << n / 365 <<
" ano(s)" << endl;
846 cout << n / 30 <<
" mes(es)" << endl;
848 cout << n <<
" dia(s)";
856 if(a % b == 0 || b % a == 0) {
857 cout <<
"Sao Multiplos";
859 cout <<
"Nao sao Multiplos";
869 cin >> a >> b >> c >> d;
870 if(b > c && d > a && c + d > a + b && c > 0 && d > 0 && a % 2 == 0) {
871 cout <<
"Valores aceitos";
873 cout <<
"Valores nao aceitos";
881 auto m = map<int, int>();
883 for(
int i = 0; i < n; i++) {
888 if(!m.contains(current)) {
889 m.insert(pair(current, 1));
893 if(!m.contains(current + length)) {
894 m.insert(pair(current + length, -1));
896 m[current + length]--;
900 if(!m.contains(current)) {
901 m.insert(pair(current, -1));
905 if(!m.contains(current - length)) {
906 m.insert(pair(current - length, 1));
908 m[current - length]++;
913 unsigned int layer_count = 0;
914 unsigned int count = 0;
917 for(
const auto p: m) {
918 layer_count += p.second;
919 if(layer_count >= 2) {
921 count += p.first - prev;
927 count += p.first - prev;
937 const double snacks[] = {4, 4.5, 5, 2, 1.5};
941 cout <<
"Total: R$ " << setiosflags(ios::fixed) << setprecision(2) << snacks[x - 1] * y;
946 auto cities = unordered_map<unsigned int, string>();
947 cities[61] =
"Brasilia";
948 cities[71] =
"Salvador";
949 cities[11] =
"Sao Paulo";
950 cities[21] =
"Rio de Janeiro";
951 cities[32] =
"Juiz de Fora";
952 cities[19] =
"Campinas";
953 cities[27] =
"Vitoria";
954 cities[31] =
"Belo Horizonte";
957 if(cities.contains(number)) {
958 cout << cities[number];
960 cout <<
"DDD nao cadastrado";
969 auto *maximum =
new int[n];
970 auto *minimum =
new int[n];
971 memset(maximum, 0, n *
sizeof(
int));
972 memset(minimum, 0, n *
sizeof(
int));
973 auto *paths =
new path[n];
974 for(
int i = 0; i < n; i++) {
978 paths[i] =
path(a, b);
980 sort(paths, paths + n);
981 maximum[0] = paths[0].b;
982 minimum[n - 1] = paths[n - 1].b;
983 for(
int i = 1; i < n; i++) {
984 maximum[i] = max(maximum[i - 1], paths[i].b);
986 for(
int i = n - 2; i >= 0; i--) {
987 minimum[i] = min(minimum[i + 1], paths[i].b);
990 for(
int i = 0; i < n; i++) {
991 if(maximum[i] > paths[i].b || minimum[i] < paths[i].b) {
1007 const string output[] = {
"[0,25]",
"(25,50]",
"(50,75]",
"(75,100]"};
1009 if(x < 0.0 || x > 100.0) {
1010 cout <<
"Fora de intervalo";
1011 }
else if(x > 75.0) {
1012 cout <<
"Intervalo " << output[3];
1013 }
else if(x > 50.0) {
1014 cout <<
"Intervalo " << output[2];
1015 }
else if(x > 25.0) {
1016 cout <<
"Intervalo " << output[1];
1018 cout <<
"Intervalo " << output[0];
1027 if(x == 0 && y == 0) {
1033 }
else if(x > 0 && y > 0) {
1035 }
else if(x < 0 && y > 0) {
1037 }
else if(x < 0 && y < 0) {
1049 auto um = unordered_map<unsigned int, unsigned int>();
1050 auto overcrowding = set<unsigned int>();
1051 for(
unsigned int i = 0; i < n; i++) {
1054 if(!um.contains(
id)) {
1055 um.insert(pair(
id, i));
1056 }
else if(!overcrowding.contains(
id)) {
1057 if(i - um[
id] > k) {
1060 overcrowding.insert(
id);
1064 if(overcrowding.empty()) {
1067 cout << *--overcrowding.end();
1077 cout << setiosflags(ios::fixed) << setprecision(1);
1078 if(a + b <= c || a + c <= b || b + c <= a) {
1079 cout <<
"Area = " << (a + b) * c / 2;
1081 cout <<
"Perimetro = " << a + b + c;
1088 cin >> arr[0] >> arr[1] >> arr[2];
1090 const double a = arr[2];
1091 const double b = arr[1];
1092 const double c = arr[0];
1094 cout <<
"NAO FORMA TRIANGULO";
1096 if(a * a == b * b + c * c) {
1097 cout <<
"TRIANGULO RETANGULO" << endl;
1099 if(a * a > b * b + c * c) {
1100 cout <<
"TRIANGULO OBTUSANGULO" << endl;
1102 if(a * a < b * b + c * c) {
1103 cout <<
"TRIANGULO ACUTANGULO" << endl;
1105 if(a == b && b == c) {
1106 cout <<
"TRIANGULO EQUILATERO" << endl;
1108 if(a == b && b != c || b == c && a != b || a == c && a != b) {
1109 cout <<
"TRIANGULO ISOSCELES" << endl;
1116 memset(
fsm, -2,
sizeof fsm);
1117 unsigned long long b;
1119 unsigned int status = 0;
1120 for(
int i = 0; i <
n; i++) {
1131 unsigned int index = 0;
1132 for(
int i = 0; i < b; i++) {
1133 if(
fsm[status] >= 0) {
1137 }
else if(round == 1 && status == index) {
1138 b = (b - i) % count + i;
1148 for(
int i = 0; i <
n; i++) {
1149 cout << static_cast<int>(ans[i]) << endl;
1156 if(
fsm[status] >= 0) {
1160 auto *
const next_bulbs =
new bool[
n];
1161 for(
int i = 0; i <
n; i++) {
1162 if(bulbs[(i - 1 +
n) %
n]) {
1163 next_bulbs[i] = !bulbs[i];
1165 next_bulbs[i] = bulbs[i];
1168 const int next_status =
compress(next_bulbs);
1169 fsm[status] = next_status;
1170 delete[] next_bulbs;
1176 auto *
const bulbs =
new bool[
n];
1177 for(
int i =
n - 1; i >= 0; i--) {
1178 bulbs[i] = (status & 1) != 0U;
1186 for(
int i = 0; i <
n; i++) {
1187 status +=
static_cast<int>(bulbs[i]);
1198 int t = (b - a + 24) % 24;
1202 cout <<
"O JOGO DUROU " << t <<
" HORA(S)";
1211 cin >> a >> b >> c >> d;
1212 unsigned int t = (c * 60 + d - (a * 60 + b) + 24 * 60) % (24 * 60);
1216 cout <<
"O JOGO DUROU " << t / 60 <<
" HORA(S) E " << t % 60 <<
" MINUTO(S)";
1225 cin >> n >> x >> y >> z;
1226 auto as = unordered_map<unsigned int, unsigned int>();
1227 auto bs = unordered_map<unsigned int, unsigned int>();
1228 auto edges = set<unsigned int>();
1229 for(
unsigned short i = 0; i < n; i++) {
1233 if(!as.contains(a)) {
1234 as.insert(pair<unsigned int, unsigned int>(a, 1));
1239 if(!bs.contains(b)) {
1240 bs.insert(pair<unsigned int, unsigned int>(b, 1));
1246 unsigned int count = x * n;
1247 unsigned int max = count;
1248 for(
unsigned int edge: edges) {
1249 if(as.contains(edge)) {
1250 count += (y - x) * as[edge];
1255 if(bs.contains(edge)) {
1256 count -= (y - z) * bs[edge];
1266 unsigned short percentual = 0;
1269 }
else if(salary <= 800) {
1271 }
else if(salary <= 1200) {
1273 }
else if(salary <= 2000) {
1278 const double new_salary = salary * (100 + percentual) / 100;
1279 cout << setiosflags(ios::fixed) << setprecision(2);
1280 cout <<
"Novo salario: " << new_salary << endl;
1281 cout <<
"Reajuste ganho: " << new_salary - salary << endl;
1282 cout <<
"Em percentual: " << percentual <<
" %";
1290 if(income <= 2000) {
1292 }
else if(2000 < income && income <= 3000) {
1294 tax += income * 0.08;
1295 }
else if(income <= 4500) {
1298 tax += income * 0.18;
1302 tax += income * 0.28;
1307 cout << setiosflags(ios::fixed) << setprecision(2) <<
"R$ " << tax;
1313 unsigned int count = 0;
1316 auto cows = vector<unsigned int>();
1318 for(
int i = 0; i < n; i++) {
1323 sort(cows.begin(), cows.end());
1324 for(
auto i = cows.begin(); i != cows.end(); ++i) {
1325 for(
auto j = i + 1; j != cows.end(); ++j) {
1326 const unsigned int xy = *j - *i;
1327 auto min = lower_bound(j, cows.end(), *j + xy);
1328 auto max = upper_bound(j, cows.end(), *j + 2 * xy);
1342 for(
int i = 0; i < n; i++) {
1346 cin >> xi >> yi >> zi;
1351 if(x == 0 && y == 0 && z == 0) {
1362 unsigned int count = 0;
1363 for(
int i = 2; i <= a - 1; i++) {
1364 unsigned short cpy = a;
1370 unsigned int denominator = a - 2;
1371 unsigned int molecular = count;
1372 while(denominator % molecular != 0) {
1373 const unsigned int temp = denominator;
1374 denominator = molecular;
1375 molecular = temp % molecular;
1377 cout << count / molecular <<
"/" << (a - 2) / molecular;
1384 auto vec = vector<unsigned long long>();
1385 for(
unsigned short i = 0; i < n; i++) {
1386 unsigned long long a;
1391 for(
const auto i:
vec) {
1398 unsigned int count = 0;
1407 unsigned int count = 0;
1416 const unsigned a3 =
no3(a);
1417 const unsigned b3 =
no3(b);
1419 const unsigned a2 =
no2(a);
1420 const unsigned b2 =
no2(b);
1430 cin >> str1 >> str2 >> str3;
1431 if(str1 ==
"vertebrado") {
1433 if(str3 ==
"carnivoro") {
1439 if(str3 ==
"onivoro") {
1446 if(str2 ==
"inseto") {
1447 if(str3 ==
"hematofago") {
1453 if(str3 ==
"hematofago") {
1454 cout <<
"sanguessuga";
1464 auto vec = vector<short>();
1469 auto sorted = vector(
vec);
1470 sort(sorted.begin(), sorted.end());
1471 for(
const auto num: sorted) {
1472 cout << num << endl;
1475 for(
const auto num:
vec) {
1476 cout << num << endl;
1484 auto t = vector<int>();
1485 auto d = vector<int>();
1486 for(
int i = 0; i < n; i++) {
1496 sort(t.begin(), t.end());
1497 sort(d.begin(), d.end());
1498 double current_d = 0;
1499 double current_t = 0;
1500 double decelerations = 1;
1501 auto it_d = d.begin();
1502 auto it_t = t.begin();
1505 if(it_d != d.end()) {
1508 const auto t_for_next_d = (next_d - current_d) * decelerations;
1509 bool next_is_d =
true;
1510 if(it_t != t.end()) {
1511 next_is_d = t_for_next_d < *it_t - current_t;
1517 current_t += t_for_next_d;
1518 }
else if(it_t != t.end()) {
1520 current_d += (*it_t - current_t) * (1.0 / decelerations);
1525 if(it_d == d.end() && it_t == t.end()) {
1526 current_t += (1000 - current_d) * decelerations;
1530 cout << lround(current_t);
1539 if(b * b - 4 * a * c < 0 || a == 0) {
1540 cout <<
"Impossivel calcular";
1543 const auto r1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
1544 const auto r2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
1545 cout << setiosflags(ios::fixed) << setprecision(5)
1546 <<
"R1 = " << r1 << endl
1556 cin >> n1 >> n2 >> n3 >> n4;
1557 const double x = (2 * n1 + 3 * n2 + 4 * n3 + n4) / 10;
1558 cout << setiosflags(ios::fixed) << setprecision(1);
1559 cout <<
"Media: " << x << endl;
1561 cout <<
"Aluno aprovado.";
1562 }
else if(x <= 5.0) {
1563 cout <<
"Aluno reprovado.";
1565 cout <<
"Aluno em exame." << endl;
1568 cout <<
"Nota do exame: " << y << endl;
1569 const double z = (x + y) / 2;
1571 cout <<
"Aluno aprovado." << endl;
1573 cout <<
"Aluno reprovado." << endl;
1575 cout <<
"Media final: " << z;
1580 namespace acwing1929 {
1583 for(
unsigned short i = 0; i <
n; i++) {
1584 for(
unsigned short j = 0; j <
m; j++) {
1589 for(
unsigned short j = 0; j <
m; j++) {
1592 for(
unsigned short j = 0; j <
m; j++) {
1595 for(
unsigned short i = 0; i <
n; i++) {
1598 for(
unsigned short i = 0; i <
n; i++) {
1606 if(x == 0 || y == 0 || x ==
n - 1 || y ==
m - 1) {
1607 unsigned int count = 0;
1611 auto path = unordered_set<step, step_hash, step_equal>();
1612 while(0 <= current_x && current_x <
n && 0 <= current_y && current_y <
m) {
1613 auto s =
step(current_d, current_x, current_y);
1614 if(!path.contains(s)) {
1621 if((*record)[x][y] != 0) {
1622 return count + (*record)[x][y];
1626 (*
get_record(!current_d))[current_x][current_y] = count;
1675 if(mirror ==
'\\') {
1684 if(mirror ==
'\\') {
1693 if(mirror ==
'\\') {
1702 if(mirror ==
'\\') {
1735 for(
int i = 1; i <= 100; i++) {
1746 for(
int i = 2; i < 10000; i += n) {
1756 auto um = unordered_map<unsigned int, unsigned int>();
1757 unsigned int max_x = 0;
1758 for(
unsigned int i = 0; i < n; i++) {
1762 max_x = max(max_x, x);
1763 um.insert(pair(x, g));
1765 unsigned int count = 0;
1766 for(
int i = 0; i < 2 * k; i++) {
1767 if(um.contains(i)) {
1771 unsigned int maximum = count;
1772 for(
int i = 1; i + 2 * k <= max_x; i++) {
1773 if(um.contains(i - 1)) {
1776 if(um.contains(i + 2 * k)) {
1777 count += um[i + 2 * k];
1779 maximum = max(maximum, count);
1788 for(
int i = 1; i <= x; i += 2) {
1800 for(
int i = 0; i < 6; i++) {
1801 cout << x + i * 2 << endl;
1809 auto cows = map<unsigned int, int>();
1810 auto indexes = vector<unsigned int>();
1811 auto sum = unordered_map<int, set<unsigned int>>();
1812 for(
unsigned int i = 0; i < n; i++) {
1816 indexes.push_back(x);
1818 cows.insert(pair(x, 1));
1820 cows.insert(pair(x, -1));
1823 sort(indexes.begin(), indexes.end());
1825 unsigned int g_count = 0;
1826 unsigned int h_count = 0;
1827 unsigned int g_max = 0;
1828 unsigned int h_max = 0;
1832 for(
auto &cow: cows) {
1833 if(cow.second == 1) {
1838 g_start = cow.first;
1840 g_count = cow.first - g_start;
1842 g_max = max(g_max, g_count);
1848 h_start = cow.first;
1850 h_count = cow.first - h_start;
1852 h_max = max(h_max, h_count);
1854 count += cow.second;
1856 if(!sum.contains(cow.second)) {
1857 auto s = set<unsigned int>();
1858 s.insert(cow.first);
1859 sum.insert(pair(cow.second, s));
1861 sum[cow.second].insert(cow.first);
1864 unsigned int maximum = 0;
1865 for(
const auto &i: sum) {
1867 maximum = max(maximum, *i.second.rbegin() - indexes[0]);
1868 }
else if(i.second.size() >= 2) {
1869 maximum = max(maximum, *i.second.rbegin() - *upper_bound(indexes.begin(), indexes.end(), *i.second.begin()));
1872 cout << max(maximum, max(g_max, h_max));
1878 for(
int i = 0; i < 6; i++) {
1885 cout << count <<
" positive numbers";
1892 for(
int i = 1; i <= 10; i++) {
1893 cout << i <<
" x " << n <<
" = " << i * n << endl;
1901 auto speeds = map<unsigned int, unsigned int>();
1902 for(
unsigned int i = 0; i < n; i++) {
1905 cin >> pos >> speed;
1906 speeds.insert(pair(pos, speed));
1908 unsigned int current_min = 1000000000;
1909 unsigned int count = 0;
1910 for(
auto i = speeds.rbegin(); i != speeds.rend(); ++i) {
1911 if((*i).second <= current_min) {
1912 current_min = (*i).second;
1925 const auto temp = x;
1930 for(
int i = x + 1; i < y; i++) {
1942 unsigned int c_count = 0;
1943 unsigned int r_count = 0;
1944 unsigned int f_count = 0;
1945 for(
unsigned short i = 0; i < n; i++) {
1961 const unsigned int count = c_count + r_count + f_count;
1962 cout << setiosflags(ios::fixed) << setprecision(2) <<
"Total: " << count <<
" animals" << endl
1963 <<
"Total coneys: " << c_count << endl
1964 <<
"Total rats: " << r_count << endl
1965 <<
"Total frogs: " << f_count << endl
1966 <<
"Percentage of coneys: " <<
static_cast<double>(c_count) /
static_cast<double>(count) * 100
1968 <<
"Percentage of rats: " <<
static_cast<double>(r_count) /
static_cast<double>(count) * 100
1970 <<
"Percentage of frogs: " <<
static_cast<double>(f_count) /
static_cast<double>(count) * 100
1978 auto *cow =
new char[n];
1979 auto *c =
new int[n];
1980 auto *w =
new int[n];
1983 for(
int i = 0; i < n; i++) {
1987 if(cow[i - 1] ==
'C') {
1992 for(
int i = n - 2; i >= 0; i--) {
1994 if(cow[i + 1] ==
'W') {
1998 unsigned long count = 0;
1999 for(
int i = 0; i < n; i++) {
2001 count += c[i] * w[i];
2015 auto ossa = ostringstream();
2016 auto ossb = ostringstream();
2018 if(isupper(ch) != 0) {
2024 if(isupper(ch) != 0) {
2042 unsigned int num[4];
2043 cin >> num[0] >> num[1] >> num[2] >> num[3];
2046 for(
int i = 0; i < 3; i++) {
2050 cout << get_min(ops, vector<unsigned long long>(begin(num), end(num)));
2055 const char op = ops[0];
2056 if(
vec.size() == 2) {
2062 const auto next_ops = vector(ops.begin() + 1, ops.end());
2063 unsigned long long minimum = 1000000000000;
2064 for(
int i = 0; i <
vec.size() - 1; i++) {
2065 for(
int j = i + 1; j <
vec.size(); j++) {
2066 unsigned long long new_num;
2068 new_num =
vec[i] +
vec[j];
2070 new_num =
vec[i] *
vec[j];
2072 auto new_vec = vector<unsigned long long>();
2073 new_vec.push_back(new_num);
2074 for(
int k = 0; k <
vec.size(); k++) {
2075 if(k != i && k != j) {
2076 new_vec.push_back(
vec[k]);
2079 const auto ret =
get_min(next_ops, new_vec);
2091 auto *s =
new unsigned int[n];
2092 auto *c =
new unsigned int[n];
2093 for(
unsigned short i = 0; i < n; i++) {
2096 for(
unsigned short i = 0; i < n; i++) {
2099 unsigned int minimum = 300000001;
2100 for(
int j = 1; j < n - 1; j++) {
2101 unsigned int min_left = 100000001;
2102 unsigned int min_right = 100000001;
2103 for(
int i = 0; i < j; i++) {
2105 if(c[i] < min_left) {
2110 for(
int k = j + 1; k < n; k++) {
2112 if(c[k] < min_right) {
2117 if(min_left != 100000001 && min_right != 100000001 && minimum > min_left + c[j] + min_right) {
2118 minimum = min_left + c[j] + min_right;
2121 if(minimum != 300000001) {
2132 for(
int i = 1; i <= 100; i++) {
2140 cout << maximum << endl
2147 unsigned int in = 0;
2148 unsigned int out = 0;
2150 for(
int i = 0; i < n; i++) {
2153 if(10 <= num && num <= 20) {
2159 cout << in <<
" in" << endl
2170 for(
int i = 1; i <= x; i++) {
2181 for(
unsigned short i = 0; i < n; i++) {
2196 for(
int j = x; j < y; j += 2) {
2199 cout << count << endl;
2205 auto b = vector<int>();
2206 auto e = vector<int>();
2207 auto s = vector<int>();
2208 auto i = vector<int>();
2209 auto g = vector<int>();
2210 auto o = vector<int>();
2211 auto m = vector<int>();
2214 for(
unsigned short j = 0; j < n; j++) {
2243 unsigned int count_a = 0;
2244 for(
const auto ms: m) {
2249 unsigned int count_b = 0;
2250 for(
const auto bs: b) {
2251 for(
const auto is: i) {
2252 if((bs + is) % 2 != 0) {
2257 unsigned int count_c = 0;
2258 for(
const auto gs: g) {
2259 for(
const auto os: o) {
2260 for(
const auto es: e) {
2261 for(
const auto ss: s) {
2262 if((gs + os + es + ss) % 2 != 0) {
2269 const unsigned long long count = b.size() * e.size() * s.size() * i.size() * g.size() * o.size() * m.size();
2270 cout << count - count_a * count_b * count_c;
2282 for(
int i = 0; i < n; i++) {
2292 auto fibb = vector<unsigned int>();
2296 for(
unsigned short i = 2; i < n; i++) {
2297 fibb[i] = fibb[i - 1] + fibb[i - 2];
2299 for(
const auto num: fibb) {
2308 auto hay = vector<unsigned int>();
2309 for(
unsigned short i = 0; i < n; i++) {
2314 sort(hay.begin(), hay.end());
2315 unsigned int maximum = 0;
2316 for(
auto start = hay.begin(); start != hay.end(); ++start) {
2317 bool left_end =
false;
2318 bool right_end =
false;
2321 for(
int i = 1;; i++) {
2323 auto l = lower_bound(hay.begin(), hay.end(), *
left - i);
2324 if(l == hay.end() || l ==
left) {
2331 auto r = upper_bound(hay.begin(), hay.end(), *
right + i) - 1;
2332 if(r == hay.end() || r ==
right) {
2338 if(left_end && right_end) {
2339 maximum = max(maximum,
static_cast<unsigned int>(
right -
left) + 1);
2352 for(
unsigned short i = 2; i < n; i++) {
2368 while(n > 0 && m > 0) {
2372 for(
int i = m; i <= n; i++) {
2375 count += 2 * (m + n);
2376 cout <<
"Sum=" << (n - m + 1) * (m + n) / 2 << endl;
2384 unsigned int min = 0;
2386 auto *r =
new unsigned short[n];
2387 for(
unsigned short i = 0; i < n; i++) {
2390 for(
unsigned short i = 0; i < n; i++) {
2391 unsigned int count = 0;
2392 for(
unsigned short j = 0; j < n - 1; j++) {
2393 count += r[(i - j + n) % n] * (n - j - 1);
2395 if(min == 0 || min > count) {
2408 for(
int i = 0; i < n; i++) {
2409 for(
int j = 0; j < m; j++) {
2411 cout << i * m + j + 1 <<
" ";
2413 cout <<
"PUM" << endl;
2424 for(
unsigned short i = 0; i < n; i++) {
2426 unsigned int count = 1;
2427 const auto max =
static_cast<unsigned int>(sqrt(
static_cast<double>(x)));
2428 for(
unsigned int j = 2; j <= max; j++) {
2438 if(x == 1 || count != x) {
2439 cout <<
" is not perfect";
2441 cout <<
" is perfect";
2454 multiset<pair<unsigned int, unsigned int>,
cmprow> row;
2455 multiset<pair<unsigned int, unsigned int>,
cmpcol> col;
2456 for(
unsigned int i = 0; i < n; i++) {
2458 row.insert(pair(x, y));
2459 col.insert(pair(x, y));
2461 unsigned int minimum = ((*row.rbegin()).first - (*row.begin()).first) * ((*col.rbegin()).second - (*col.begin()).second);
2463 auto row_cpy = multiset(row);
2464 auto col_cpy = multiset(col);
2465 auto r_pair = *row_cpy.begin();
2466 row_cpy.erase(row_cpy.find(r_pair));
2467 col_cpy.erase(col_cpy.find(r_pair));
2468 minimum = min(minimum, ((*row_cpy.rbegin()).first - (*row_cpy.begin()).first) * ((*col_cpy.rbegin()).second - (*col_cpy.begin()).second));
2470 row_cpy = multiset(row);
2471 col_cpy = multiset(col);
2472 r_pair = *row_cpy.rbegin();
2473 row_cpy.erase(row_cpy.find(r_pair));
2474 col_cpy.erase(col_cpy.find(r_pair));
2475 minimum = min(minimum, ((*row_cpy.rbegin()).first - (*row_cpy.begin()).first) * ((*col_cpy.rbegin()).second - (*col_cpy.begin()).second));
2477 row_cpy = multiset(row);
2478 col_cpy = multiset(col);
2479 auto c_pair = *col_cpy.begin();
2480 row_cpy.erase(row_cpy.find(c_pair));
2481 col_cpy.erase(col_cpy.find(c_pair));
2482 minimum = min(minimum, ((*row_cpy.rbegin()).first - (*row_cpy.begin()).first) * ((*col_cpy.rbegin()).second - (*col_cpy.begin()).second));
2484 row_cpy = multiset(row);
2485 col_cpy = multiset(col);
2486 c_pair = *col_cpy.rbegin();
2487 row_cpy.erase(row_cpy.find(c_pair));
2488 col_cpy.erase(col_cpy.find(c_pair));
2489 minimum = min(minimum, ((*row_cpy.rbegin()).first - (*row_cpy.begin()).first) * ((*col_cpy.rbegin()).second - (*col_cpy.begin()).second));
2502 int charmap[26] = {};
2504 for(
int i = 0; i < n; i++) {
2505 int charmap_a[26] = {};
2506 int charmap_b[26] = {};
2510 for(
const char ch: a) {
2511 charmap_a[ch -
'a']++;
2513 for(
const char ch: b) {
2514 charmap_b[ch -
'a']++;
2516 for(
int j = 0; j < 26; j++) {
2517 charmap[j] += max(charmap_a[j], charmap_b[j]);
2520 for(
const int i: charmap) {
2530 for(
int i = 0; i < n; i++) {
2532 for(
int j = 2; j <= sqrt(x); j++) {
2534 cout << x <<
" is not prime" << endl;
2538 cout << x <<
" is prime" << endl;
2547 for(
int i = 0; i <= n / 2; i++) {
2548 for(
int j = 0; j < n / 2 - i; j++) {
2551 for(
int k = 0; k < 1 + 2 * i; k++) {
2556 for(
int i = n / 2 + 1; i < n; i++) {
2557 for(
int j = 0; j < i - n / 2; j++) {
2560 for(
int k = 0; k < 1 + 2 * (n - i - 1); k++) {
2570 for(
int i = 0; i < 10; i++) {
2575 cout <<
"X[" << i <<
"] = " << x << endl;
2582 for(
int i = 0; i < 20; i++) {
2583 cin >> n[20 - i - 1];
2585 for(
int i = 0; i < 20; i++) {
2586 cout <<
"N[" << i <<
"] = " << n[i] << endl;
2600 for(
int i = 0; i < n; i++) {
2604 if(a == 1 && b == 2) {
2608 }
else if(a == 1 && b == 3) {
2612 }
else if(a == 2 && b == 1) {
2616 }
else if(a == 2 && b == 3) {
2620 }
else if(a == 3 && b == 1) {
2624 }
else if(a == 3 && b == 2) {
2630 int maximum = count_123;
2631 maximum = max(maximum, count_132);
2632 maximum = max(maximum, count_213);
2633 maximum = max(maximum, count_231);
2634 maximum = max(maximum, count_312);
2635 maximum = max(maximum, count_321);
2643 if(isupper(ch) != 0) {
2646 if(ch ==
'a' || ch ==
'e' || ch ==
'i' || ch ==
'o' || ch ==
'u' || ch ==
'y') {
2660 auto flag = vector(n,
false);
2661 auto edge = vector(n, unordered_set<unsigned short>());
2662 for(
unsigned short i = 0; i < m; i++) {
2664 edge[a - 1].insert(b - 1);
2665 edge[b - 1].insert(a - 1);
2668 auto que = queue<pair<unsigned short, unsigned short>>();
2669 que.push(pair(0, 0));
2671 while(!que.empty()) {
2672 auto [prev, current] = que.front();
2674 for(
auto next: edge[current]) {
2683 que.push(pair(current, next));
2689 for(
unsigned short i = 0; i < n; i++) {
2705 ops = vector<char>();
2706 forth = vector<pair<int, int>>();
2707 back = vector<pair<int, int>>();
2709 forth.emplace_back(0, 0);
2710 for(
int i = 0; i <
n; i++) {
2732 if(
forth.back().first ==
a &&
forth.back().second ==
b) {
2736 if(
n < abs(
a) + abs(
b) || (
n - (abs(
a) + abs(
b))) % 2 != 0) {
2741 for(
int i =
n - 1; i >= 0; i--) {
2744 back.emplace_back(
back.back().first,
back.back().second - 1);
2748 back.emplace_back(
back.back().first,
back.back().second + 1);
2752 back.emplace_back(
back.back().first + 1,
back.back().second);
2756 back.emplace_back(
back.back().first - 1,
back.back().second);
2765 const int mid = (l + r) / 2;
2777 for(
int i = 0; i + len <
n + 1; i++) {
2778 const auto s =
forth[i];
2779 const auto e =
back[i + len];
2780 const auto dist = abs(s.first - e.first) + abs(s.second - e.second);
2781 if(len - dist >= 0 && (len - dist) % 2 == 0) {
2791 for(
int i = 0; i < 10; i++) {
2792 cout <<
"N[" << i <<
"] = " << v *
static_cast<unsigned int>(pow(2, i)) << endl;
2801 unsigned int fib[60];
2804 for(
int i = 2; i < 60; i++) {
2805 fib[i] = fib[i - 1] + fib[i - 2];
2807 for(
unsigned i = 0; i < t; i++) {
2809 cout <<
"Fib(" << n <<
") = " << fib[n] << endl;
2817 auto poses = vector(26, vector<int>());
2818 for(
int i = 0; i < 52; i++) {
2822 poses[ch -
'A'].push_back(i);
2824 for(
auto pos: poses) {
2825 auto um = unordered_map<int, int>();
2826 for(
int i = pos[0] + 1; i < pos[1]; i++) {
2827 if(!um.contains(str[i])) {
2828 um.insert(pair(str[i], 1));
2833 for(
const auto p: um) {
2838 um = unordered_map<int, int>();
2839 for(
int i = pos[1] + 1; i < pos[0] + 52; i++) {
2840 if(!um.contains(str[i % 52])) {
2841 um.insert(pair(str[i % 52], 1));
2843 um[str[i % 52]] = 0;
2846 for(
const auto p: um) {
2858 cout << setiosflags(ios::fixed) << setprecision(1);
2859 for(
int i = 0; i < 100; i++) {
2862 cout <<
"A[" << i <<
"] = " << a << endl;
2871 unsigned short minimum_i = 0;
2872 short minimum = 1000;
2874 for(
unsigned short i = 0; i < n; i++) {
2881 cout <<
"Minimum value: " << minimum << endl
2882 <<
"Position: " << minimum_i;
2891 auto *dot =
new int[m];
2892 memset(dot, 0, m *
sizeof(
int));
2893 auto *normal =
new int[m];
2894 memset(normal, 0, m *
sizeof(
int));
2895 for(
int i = 0; i < n; i++) {
2896 for(
int j = 0; j < m; j++) {
2898 dot[j] |= 1 << ch -
'A';
2901 for(
int i = 0; i < n; i++) {
2902 for(
int j = 0; j < m; j++) {
2904 normal[j] |= 1 << ch -
'A';
2908 for(
int i = 0; i < m; i++) {
2909 if((dot[i] & normal[i]) == 0) {
2930 for(
int j = 0; j < 12; j++) {
2936 cout << fixed << setprecision(1) << ans;
2951 for(
const auto &j: m) {
2957 cout << fixed << setprecision(1) << ans;
2967 for(
int i = 0; i < 12; i++) {
2968 for(
int j = 0; j < 12; j++) {
2979 cout << fixed << setprecision(1) << sum;
2989 for(
int i = 0; i < 12; i++) {
2990 for(
int j = 0; j < 12; j++) {
3001 cout << fixed << setprecision(1) << sum;
3008 auto *a =
new int[n + 1];
3009 auto *
id =
new string[n + 1];
3010 for(
int i = 1; i <= n; i++) {
3013 for(
int i = 1; i <= n; i++) {
3016 for(
int i = 1; i <= n; i++) {
3017 cout <<
id[a[a[a[i]]]] << endl;
3027 auto start = unordered_set<int>();
3028 auto end = unordered_set<int>();
3029 auto t = vector<pair<int, int>>();
3030 auto levels = vector<int>();
3031 levels.resize(1000);
3032 for(
int i = 0; i < n; i++) {
3038 t.emplace_back(make_pair(t1, t2));
3042 for(
int i = 0; i < 1000; i++) {
3043 if(start.count(i) == 1) {
3046 if(end.count(i) == 1) {
3055 for(
auto [t1, t2]: t) {
3057 for(
int i = t1; i < t2; i++) {
3058 if(levels[i] == 1) {
3062 ans = max(ans, len);
3074 for(
int i = 0; i < 12; i++) {
3075 for(
int j = 0; j < 12; j++) {
3086 cout << fixed << setprecision(1) << sum;
3096 for(
int i = 0; i < 12; i++) {
3097 for(
int j = 0; j < 12; j++) {
3108 cout << fixed << setprecision(1) << sum;
3115 if(n == 1 || n == 2) {
3119 auto *x =
new int[n];
3120 auto *jmp =
new int[n];
3121 auto *in =
new int[n];
3122 memset(in, 0, n *
sizeof(
int));
3123 for(
int i = 0; i < n; i++) {
3131 for(
int i = 1; i < n - 1; i++) {
3132 if(x[i + 1] - x[i] < x[i] - x[i - 1]) {
3140 int circle_count = 0;
3142 for(
int i = 0; i < n; i++) {
3146 if(jmp[jmp[i]] == i && in[i] == 1 && in[jmp[i]] == 1) {
3151 cout << ans + circle_count;
3163 for(
int i = 0; a * i <= n; i++) {
3164 for(
int j = 0; a * i + b * j <= n; j++) {
3165 if(a * i + b * j == n) {
3166 cout <<
"YES" << endl
3180 unsigned int d[200000];
3181 unsigned long long left[200001];
3182 unsigned long long right[200001];
3183 for(
int i = 0; i < n; i++) {
3187 auto us = unordered_map<unsigned long long, unsigned int>();
3188 us.insert(make_pair(0, 0));
3189 for(
int i = 1; i <= n; i++) {
3191 us.insert(make_pair(
left[i], i));
3194 unsigned long long ans = 0;
3195 for(
int i = n - 1; i >= 0; i--) {
3197 if(us.count(
right[i]) == 1) {
3198 if(us[
right[i]] <= i) {
3199 ans = max(ans,
right[i]);
3210 memset(
a, 0,
n *
sizeof(
int));
3211 for(
int i = 0; i <
n; i++) {
3218 memset(
b, 0,
m *
sizeof(
int));
3219 memset(
found, 0,
m *
sizeof(
bool));
3220 memset(
match, -1,
m *
sizeof(
int));
3221 for(
int i = 0; i <
m; i++) {
3225 for(
int i = 0; i <
n; i++) {
3227 for(
int j = 0; j <
m; j++) {
3228 if(abs(
a[i] -
b[j]) <= 1) {
3237 for(
int i = 0; i <
n; i++) {
3238 memset(
found, 0,
m *
sizeof(
bool));
3244 for(
int i = 0; i <
n; i++) {
3256 for(
int j = 0; j <
m; j++) {
3276 for(
int i = 0; i < 12; i++) {
3277 for(
int j = 0; j < 12; j++) {
3279 if(j > i && i + j < 11) {
3288 cout << fixed << setprecision(1) << sum;
3298 for(
int i = 0; i < 12; i++) {
3299 for(
int j = 0; j < 12; j++) {
3301 if(i + j > 11 && i > j) {
3310 cout << fixed << setprecision(1) << sum;
3320 for(
int i = 0; i < 12; i++) {
3321 for(
int j = 0; j < 12; j++) {
3323 if(i + j < 11 && i > j) {
3332 cout << fixed << setprecision(1) << sum;
3342 for(
int i = 0; i < 12; i++) {
3343 for(
int j = 0; j < 12; j++) {
3345 if(i + j > 11 && i < j) {
3354 cout << fixed << setprecision(1) << sum;
3363 unordered_set<int>
ms;
3364 auto *
const m =
new int[
M];
3365 auto *
const n =
new int[
N + 1];
3366 memset(n, -1, (
N + 1) *
sizeof(
int));
3367 for(
int i = 0; i <
M; i++) {
3371 auto cp = unordered_map<int, int>();
3372 for(
int i = 0; i < K; i++) {
3377 cp.insert(make_pair(c, p));
3379 if(cp.contains(1)) {
3386 if(
ms.contains(1)) {
3389 for(
int i = 0; i <
M; i++) {
3391 if(cp.contains(m[i])) {
3397 while(n[current] != -1) {
3411 for(
int i =
M - 1; i >= 0; i--) {
3412 if(cp.contains(m[i])) {
3418 while(n[current] != -1) {
3423 for(
int i = 1; i <=
N; i++) {
3441 for(
int i = 0; i < n; i++) {
3442 for(
int j = 0; j < n; j++) {
3443 cout << min(min(i, j), min(n - i - 1, n - j - 1)) + 1 <<
" ";
3459 for(
int i = 0; i < n; i++) {
3460 for(
int j = 0; j < n; j++) {
3461 cout << abs(j - i) + 1 <<
" ";
3473 auto sb = unordered_map<int, int>();
3474 auto tb = unordered_map<int, int>();
3475 for(
int i = 0; i < n; i++) {
3480 sb.insert(make_pair(s, b));
3481 tb.insert(make_pair(t, b));
3485 for(
int i = 1; i <= 1000; i++) {
3486 if(sb.count(i) == 1) {
3488 }
else if(tb.count(i) == 1) {
3491 ans = max(ans, current);
3504 for(
int i = 0; i < n; i++) {
3505 for(
int j = 0; j < n; j++) {
3506 cout << static_cast<int>(pow(2, i + j)) <<
" ";
3518 int arr[100][100] = {};
3533 const int next_y = y - 1;
3534 if(arr[x][next_y] != 0 || next_y < 0) {
3536 dir = (dir + 1) % 4;
3544 const int next_x = x + 1;
3545 if(arr[next_x][y] != 0 || next_x >= n) {
3546 dir = (dir + 1) % 4;
3554 const int next_y = y + 1;
3555 if(arr[x][next_y] != 0 || next_y >= m) {
3556 dir = (dir + 1) % 4;
3564 const int next_x = x - 1;
3565 if(arr[next_x][y] != 0 || next_x < 0) {
3566 dir = (dir + 1) % 4;
3574 for(
int i = 0; i < n; i++) {
3575 for(
int j = 0; j < m; j++) {
3576 cout << arr[i][j] <<
" ";
3586 auto *
const p =
new int[n];
3587 for(
int i = 0; i < n; i++) {
3591 for(
int j = i - 1; j >= 0 && p[j] < p[i]; i--, j--) {}
3598 auto *str =
new char[101];
3599 cin.getline(str, 101);
3600 for(
int i = 0; i < 101; i++) {
3601 if(str[i] ==
'\0') {
3615 for(
int i = 0; i < a.length(); i++) {
3620 cout << (match >= k * a.length() ?
"yes" :
"no");
3628 bitset<151> ns[101] = {};
3629 bitset<151> ans[4] = {};
3630 for(
int i = 1; i <= m; i++) {
3637 for(
int i = 1; i <= n; i++) {
3638 for(
int j = 0; j < 4; j++) {
3639 if((ns[i] & ans[j]) == 0) {
3650 auto *str =
new char[101];
3651 cin.getline(str, 101);
3652 unsigned short ans = 0;
3653 for(
unsigned short i = 0; str[i] !=
'\0'; i++) {
3654 if(isdigit(str[i]) != 0) {
3664 auto *a =
new char[81];
3665 auto *b =
new char[81];
3668 for(
int i = 0;; i++) {
3669 if(isupper(a[i]) != 0) {
3670 a[i] = tolower(a[i]);
3672 if(isupper(b[i]) != 0) {
3673 b[i] = tolower(b[i]);
3675 if(a[i] ==
'\0' && b[i] ==
'\0') {
3693 int acwing1471::main(istream &cin, ostream &cout) {
3696 auto *in = new int[n];
3697 auto *out = new int[n];
3698 memset(in, 0, n * sizeof(int));
3699 memset(out, 0, n * sizeof(int));
3702 for(int i = 0; i < n - 1; i++) {
3709 for(int i = 0; i < n; i++) {
3710 if(in[i] > 0 && out[i] == 0) {
3717 if(in[i] == 0 && out[i] > 1) {
3732 int acwing763::main(istream &cin, ostream &cout) {
3735 for(int i = 0; i < t; i++) {
3738 cin >> str1 >> str2;
3741 } else if(str1 == "Hunter" && str2 == "Gun" || str1 == "Gun" && str2 == "Bear" || str1 == "Bear" && str2 == "Hunter") {
3751 int acwing766::main(istream &cin, ostream &cout) {
3752 auto *str = new char[201];
3753 cin.getline(str, 201);
3755 for(int i = 0; str[i] != '\0
'; i++) {
3767 int acwing1460::main(istream &cin, ostream &cout) {
3772 for(int k = 1; k <= n; k++) {
3773 auto us = unordered_set<string>();
3775 for(int i = 0; i + k <= n; i++) {
3776 string nstr = str.substr(i, k);
3777 if(!us.contains(nstr)) {
3792 int acwing4299::main(istream &cin, ostream &cout) {
3797 for(int i = 0; i < n; i++) {
3807 if(pos <= 1 || neg <= 1) {
3815 int acwing4300::main(istream &cin, ostream &cout) {
3819 auto um = unordered_set<int>();
3820 auto que = queue<pair<int, int>>();
3821 que.push(make_pair(n, 0));
3823 while(!que.empty()) {
3824 auto [current, step] = que.front();
3831 const int nexts[2] = {current - 1, current * 2};
3835 for(int i = 0; i < k; i++) {
3836 auto next = nexts[i];
3841 if(next > 0 && !um.contains(next)) {
3842 que.push(make_pair(next, step + 1));
3850 int acwing4301::main(istream &cin, ostream &cout) {
3853 auto vec = vector<int>();
3854 auto targets = unordered_set<int>();
3859 for(int i = 0; i < n; i++) {
3864 maximum = max(maximum, a);
3870 for(int i = maximum; i <= sum / 2; i++) {
3875 for(const auto target: targets) {
3878 for(int i = 0; i < n; i++) {
3880 if(current == target) {
3882 } else if(current > target) {
3887 if(ok && current == 0) {
3896 int acwing765::main(istream &cin, ostream &cout) {
3897 auto *str = new char[101];
3898 cin.getline(str, 101);
3899 for(int i = 0; str[i] != '\0
'; i++) {
3900 cout << str[i] << " ";
3906 int acwing767::main(istream &cin, ostream &cout) {
3907 auto *str = new char[101];
3908 cin.getline(str, 101);
3909 for(int i = 0; str[i] != '\0
'; i++) {
3910 if(isupper(str[i]) != 0) {
3911 str[i] = (str[i] - 'A
' + 1) % 26 + 'A
';
3912 } else if(islower(str[i]) != 0) {
3913 str[i] = (str[i] - 'a
' + 1) % 26 + 'a
';
3921 int acwing769::main(istream &cin, ostream &cout) {
3935 int acwing764::main(istream &cin, ostream &cout) {
3936 auto *a = new char[101];
3937 cin.getline(a, 101);
3938 const int len = strlen(a);
3939 for(int i = 1; i <= len; i++) {
3940 cout << static_cast<char>(a[(i - 1) % len] + a[i % len]);
3946 int acwing1443::main(istream &cin, ostream &cout) {
3949 auto *a = new int[n];
3950 auto *b = new int[n - 1];
3951 for(int i = 0; i < n - 1; i++) {
3954 for(int i = 1; i <= n; i++) {
3955 auto us = unordered_set<int>();
3958 for(int j = 1; j < n; j++) {
3959 a[j] = b[j - 1] - a[j - 1];
3960 if(us.contains(a[j]) || a[j] <= 0) {
3969 for(int j = 0; j < n; j++) {
3970 cout << a[j] << " ";
3980 int acwing773::main(istream &cin, ostream &cout) {
3985 auto oss = ostringstream();
3987 for(int i = 0; i < str.length(); i++) {
3988 if(str[i] > str[max_i]) {
3992 oss << str.substr(0, max_i + 1);
3994 oss << str.substr(max_i + 1);
3995 cout << oss.str() << endl;
4000 int acwing770::main(istream &cin, ostream &cout) {
4001 auto *str = new char[101];
4002 auto *to_be_replaced = new char[101];
4003 auto *replacement = new char[101];
4004 cin.getline(str, 101);
4005 cin.getline(to_be_replaced, 101);
4006 cin.getline(replacement, 101);
4007 for(const char *word = strtok(str, " "); word != nullptr; word = strtok(nullptr, " ")) {
4008 if(strcmp(word, to_be_replaced) == 0) {
4009 cout.write(replacement, strlen(replacement));
4011 cout.write(word, strlen(word));
4016 delete[] to_be_replaced;
4017 delete[] replacement;
4021 int acwing1672::main(istream &cin, ostream &cout) {
4027 bool prev_eq = true;
4029 for(int i = 0; i < n; i++) {
4046 int acwing772::main(istream &cin, ostream &cout) {
4049 int charset[26] = {};
4050 for(const char ch: str) {
4051 charset[ch - 'a
']++;
4053 for(const char ch: str) {
4054 if(charset[ch - 'a
'] == 1) {
4063 int acwing771::main(istream &cin, ostream &cout) {
4066 for(int i = 0; i < n; i++) {
4069 char ch_max = str[0];
4073 for(int j = 1; j < str.length(); j++) {
4074 if(str[j] == str[j - 1]) {
4077 if(count > count_max) {
4085 if(count > count_max) {
4089 cout << ch_max << " " << count_max << endl;
4094 namespace acwing1660 {
4095 int acwing1660::main(istream &cin, ostream &cout) {
4098 auto cows = vector<cow>();
4099 for(int i = 0; i < n; i++) {
4102 cin >> x >> infected;
4103 cows.push_back(cow{x, infected});
4105 sort(cows.begin(), cows.end());
4107 for(int i = 0; i < n; i++) {
4108 if(i - 1 >= 0 && cows[i].infected != cows[i - 1].infected) {
4109 r = min(r, abs(cows[i].x - cows[i - 1].x));
4111 if(i + 1 < n && cows[i].infected != cows[i + 1].infected) {
4112 r = min(r, abs(cows[i].x - cows[i + 1].x));
4115 for(int i = 0; i + 1 < n; i++) {
4116 if(cows[i].infected && cows[i + 1].infected && abs(cows[i].x - cows[i + 1].x) < r) {
4117 cows[i].infected = false;
4121 for(int i = 0; i < n; i++) {
4122 if(cows[i].infected) {
4130 bool cow::operator<(const cow &c) const { return this->x < c.x; }
4131 }// namespace acwing1660
4133 int acwing774::main(istream &cin, ostream &cout) {
4134 auto *str = new char[501];
4135 cin.getline(str, 501);
4136 str[strlen(str) - 1] = '\0
';
4137 const char *longest_word = nullptr;
4139 for(const char *word = strtok(str, " "); word != nullptr; word = strtok(nullptr, " ")) {
4140 if(max_len < strlen(word)) {
4141 max_len = strlen(word);
4142 longest_word = word;
4145 cout << longest_word;
4150 int acwing775::main(istream &cin, ostream &cout) {
4151 auto *str = new char[101];
4152 auto *str_rev = new char *[101];
4154 cin.getline(str, 101);
4155 for(char *word = strtok(str, " "); word != nullptr; word = strtok(nullptr, " ")) {
4156 str_rev[i++] = word;
4158 for(int j = i - 1; j >= 0; j--) {
4159 cout << str_rev[j] << " ";
4166 int acwing3347::main(istream &cin, ostream &cout) {
4169 auto *flowers = new int[n];
4170 auto *prefix_sum = new int[n];
4171 auto location = unordered_map<int, unordered_set<int>>();
4173 for(int i = 0; i < n; i++) {
4176 prefix_sum[i] = sum;
4177 location[flowers[i]].insert(i);
4180 for(int i = 0; i < n; i++) {
4181 for(int j = i; j < n; j++) {
4182 const int len = j - i + 1;
4183 sum = prefix_sum[j] - (i - 1 >= 0 ? prefix_sum[i - 1] : 0);
4184 if(sum % len == 0) {
4185 int avg = sum / len;
4186 for(const auto flower: location[avg]) {
4187 if(i <= flower && flower <= j) {
4197 delete[] prefix_sum;
4201 int acwing777::main(istream &cin, ostream &cout) {
4205 for(int i = 1; i <= str.length(); i++) {
4206 if(str.length() % i == 0) {
4208 string substr = str.substr(0, i);
4209 for(int j = i; j < str.length(); j += i) {
4210 if(str.substr(j, i) != substr) {
4216 cout << str.length() / i << endl;
4226 int acwing776::main(istream &cin, ostream &cout) {
4230 const string s11 = s1 + s1;
4231 const string s22 = s2 + s2;
4232 cout << boolalpha << (s11.find(s2) != string::npos || s22.find(s1) != string::npos);
4236 int acwing4302::main(istream &cin, ostream &cout) {
4241 for(int i = 0; i < n; i++) {
4250 cout << sum_b + sum_c;
4254 int acwing4303::main(istream &cin, ostream &cout) {
4257 auto um = unordered_map<string, vector<string> *>();
4258 for(int i = 0; i < q; i++) {
4261 cin >> str1 >> str2;
4262 if(!um.contains(str1)) {
4263 auto *vec = new vector<string>();
4264 vec->push_back(str1);
4265 vec->push_back(str2);
4266 um.insert(make_pair(str2, vec));
4268 um[str1]->push_back(str2);
4269 um[str2] = um[str1];
4274 for(auto [k, v]: um) {
4279 cout << count << endl;
4280 for(auto [k, v]: um) {
4282 cout << *v->begin() << " " << k << endl;
4289 int acwing4304::main(istream &cin, ostream &cout) {
4292 auto vec = vector<unsigned int>();
4293 for(int i = 0; i < n; i++) {
4296 auto ui = str2int(str);
4298 for(int j = 0; j < vec.size(); j++) {
4299 if((vec[j] & ui) != 0) {
4311 for(int i = 0; i + 1 < vec.size(); i++) {
4312 for(int j = i + 1; j < vec.size(); j++) {
4313 if((vec[i] & vec[j]) != 0) {
4315 vec.erase(vec.begin() + j);
4325 unsigned int acwing4304::str2int(const string &str) {
4326 unsigned int ans = 0;
4327 for(const char ch: str) {
4328 ans |= 1 << ch - 'a
';
4333 int acwing778::main(istream &cin, ostream &cout) {
4334 auto *input = new char[323];
4335 auto strs = vector<string>();
4336 cin.getline(input, 323);
4337 for(char *str = strtok(input, ","); str != nullptr; str = strtok(nullptr, ",")) {
4338 strs.emplace_back(str);
4340 auto l = strs[0].find(strs[1]);
4341 const auto r = strs[0].rfind(strs[2]);
4342 if(l == string::npos || r == string::npos) {
4346 l += strs[1].length();
4347 cout << (static_cast<int>(r) < static_cast<int>(l) ? -1 : static_cast<int>(r) - static_cast<int>(l));
4351 int acwing779::main(istream &cin, ostream &cout) {
4360 for(int i = 1; i < n; i++) {
4363 if(!suffix.empty()) {
4364 auto ss = stringstream();
4365 for(int j = 0; j < min(str.length(), suffix.length()) && suffix[suffix.length() - 1 - j] == str[str.length() - 1 - j]; j++) {
4366 ss << suffix[suffix.length() - 1 - j];
4368 string s = ss.str();
4369 suffix = string(s.rbegin(), s.rend());
4372 cout << suffix << endl;
4377 int acwing804::fact(int n) {
4381 return n * fact(n - 1);
4384 int acwing804::main(istream &cin, ostream &cout) {
4391 int acwing810::abs(int n) { return n > 0 ? n : -n; }
4393 int acwing810::main(istream &cin, ostream &cout) {
4400 int acwing805::main(istream &cin, ostream &cout) {
4408 int acwing805::max(int x, int y) { return x > y ? x : y; }
4410 int acwing806::main(istream &cin, ostream &cout) {
4414 cout << fixed << setprecision(2) << add(x, y);
4418 double acwing806::add(double x, double y) { return x + y; }
4420 int acwing808::main(istream &cin, ostream &cout) {
4428 int acwing808::gcd(int a, int b) {
4430 const int t = a % b;
4437 int acwing807::main(istream &cin, ostream &cout) {
4445 int acwing807::sum(int l, int r) {
4446 int sum = (l + r) * ((r - l + 1) / 2);
4447 if((r - l + 1) % 2 == 1) {
4453 int acwing811::main(istream &cin, ostream &cout) {
4458 cout << x << " " << y;
4462 void acwing811::swap(int &x, int &y) {
4468 int acwing809::main(istream &cin, ostream &cout) {
4476 int acwing809::lcm(int a, int b) {
4477 const int f = acwing808::gcd(a, b);
4481 int acwing812::main(istream &cin, ostream &cout) {
4485 auto *a = new int[n];
4486 for(int i = 0; i < n; i++) {
4489 print(a, size, cout);
4494 void acwing812::print(int *a, int size, ostream &cout) {
4495 for(int i = 0; i < size; i++) {
4496 cout << a[i] << " ";
4500 int acwing814::main(istream &cin, ostream &cout) {
4504 cin >> n >> m >> size;
4505 auto *a = new int[n];
4506 auto *b = new int[m];
4507 for(int i = 0; i < n; i++) {
4510 for(int i = 0; i < m; i++) {
4514 for(int i = 0; i < m; i++) {
4515 cout << b[i] << " ";
4520 void acwing814::copy(const int *a, int *b, int size) {
4521 for(int i = 0; i < size; i++) {
4526 void acwing813::print2D(int a[][100], int row, int col, ostream &cout) {
4527 for(int i = 0; i < row; i++) {
4528 for(int j = 0; j < col; j++) {
4529 cout << a[i][j] << " ";
4535 int acwing813::main(istream &cin, ostream &cout) {
4540 for(int i = 0; i < row; i++) {
4541 for(int j = 0; j < col; j++) {
4545 print2D(arr, row, col, cout);
4549 int acwing815::main(istream &cin, ostream &cout) {
4550 auto *str = new char[101];
4551 cin.getline(str, 101);
4556 void acwing815::print(char *str, ostream &cout) {
4557 for(int i = 0; str[i] != '\0
'; i++) {
4562 int acwing4305::main(istream &cin, ostream &cout) {
4565 char fibb[1001] = {};
4566 memset(fibb, 'o
', sizeof fibb);
4570 unsigned int next = a + b;
4577 for(int i = 1; i <= n; i++) {
4583 int acwing4306::main(istream &cin, ostream &cout) {
4587 for(int i = 0; i < n; i++) {
4590 sort(a.begin(), a.end());
4593 for(int i = 1; i <= n; i++) {
4594 if(i + addition < a[i - 1]) {
4595 addition = a[i - 1] - i;
4597 sum += i + addition - a[i - 1];
4603 int acwing4307::main(istream &cin, ostream &cout) {
4607 auto a_count = unordered_map<int, int>();
4608 for(const char ch: a) {
4609 a_count[ch - '0
']++;
4611 if(a.length() == b.length()) {
4612 cout << dfs(0, false, a_count, b);
4614 for(int i = 9; i >= 0; i--) {
4615 while(a_count[i] > 0) {
4624 string acwing4307::dfs(int i, bool free, unordered_map<int, int> um, string &b) {
4625 auto oss = ostringstream();
4631 auto um_cpy = unordered_map(um);
4633 if(i == b.length() - 1) {
4637 string ans = dfs(i + 1, false, um_cpy, b);
4646 int k = b[i] - '0
' - 1;
4650 for(; k >= 0; k--) {
4652 auto um_cpy = unordered_map(um);
4654 if(i == b.length() - 1) {
4658 string ans = dfs(i + 1, true, um_cpy, b);
4670 int acwing819::main(istream &cin, ostream &cout) {
4673 cout << factorial(n);
4677 int acwing819::factorial(int n) {
4681 return n * factorial(n - 1);
4684 int acwing816::main(istream &cin, ostream &cout) {
4688 auto *a = new int[n];
4689 for(int i = 0; i < n; i++) {
4693 for(int i = 0; i < n; i++) {
4694 cout << a[i] << " ";
4700 void acwing816::reverse(int a[], int size) {
4701 for(int i = 0; i < size - 1 - i; i++) {
4702 const int tmp = a[i];
4703 a[i] = a[size - 1 - i];
4704 a[size - 1 - i] = tmp;
4708 int acwing820::main(istream &cin, ostream &cout) {
4715 int acwing820::fibb(int n) {
4719 return fibb(n - 1) + fibb(n - 2);
4722 int acwing817::main(istream &cin, ostream &cout) {
4725 auto *a = new int[n];
4726 for(int i = 0; i < n; i++) {
4729 cout << get_unique_count(a, n);
4734 int acwing817::get_unique_count(int *a, int n) {
4735 unordered_set<int> um;
4736 for(int i = 0; i < n; i++) {
4742 int acwing818::main(istream &cin, ostream &cout) {
4747 auto *a = new int[n];
4748 for(int i = 0; i < n; i++) {
4752 for(int i = 0; i < n; i++) {
4753 cout << a[i] << " ";
4759 void acwing818::sort(int *a, int l, int r) {
4767 const int tmp = a[l];
4771 const int m = a[(l + r) / 2];
4775 for(int i = l; i <= r; i++) {
4776 if(i != (l + r) / 2) {
4778 dq.push_front(a[i]);
4785 for(int i = l; i <= r; i++) {
4788 if(l <= cursor - 1) {
4789 sort(a, l, cursor - 1);
4791 if(r >= cursor + 1) {
4792 sort(a, cursor + 1, r);
4796 int acwing821::main(istream &cin, ostream &cout) {
4799 auto *dp = new int[n + 1];
4800 memset(dp, 0, (n + 1) * sizeof(int));
4803 for(int i = 1; i <= n; i++) {
4816 int acwing822::main(istream &cin, ostream &cout) {
4820 const int sum = n + m;
4821 auto *factorial = new unsigned long long[sum + 1];
4823 for(int i = 2; i <= sum; i++) {
4824 factorial[i] = i * factorial[i - 1];
4826 cout << factorial[sum] / (factorial[n] * factorial[m]);
4831 int acwing823::main(istream &cin, ostream &cout) {
4835 for(int i = 1; i <= n; i++) {
4843 void acwing823::dfs(vector<int> &vec, set<int> &s, ostream &cout) {
4845 for(const int i: vec) {
4851 vector vec_cpy = vec;
4853 vec_cpy.push_back(i);
4855 dfs(vec_cpy, s_cpy, cout);
4860 int acwing21::Solution::Fibonacci(int n) {
4861 auto *fibb = new int[n];
4864 for(int i = 2; i < n; i++) {
4865 fibb[i] = fibb[i - 1] + fibb[i - 2];
4867 const int ans = fibb[n - 1];
4872 namespace acwing78 {
4873 string Solution::leftRotateString(string str, int n) {
4875 for(int i = 0; i < str.length(); i++) {
4876 oss << str[(n + i) % str.length()];
4880 }// namespace acwing78
4882 namespace acwing16 {
4883 string Solution::replaceSpaces(string &str) {
4885 for(const char ch: str) {
4894 }// namespace acwing16
4896 namespace acwing87 {
4897 int Solution::strToInt(string str) {
4898 for(int i = 0; i < str.length(); i++) {
4900 str = str.substr(i);
4905 if(str[0] == '+
' || str[0] == '-
') {
4906 pos = str[0] == '+
';
4907 str = str.substr(1);
4909 unsigned long long ans = 0;
4910 for(const char ch: str) {
4911 if(isdigit(ch) != 0) {
4918 return ans > INT_MAX
4919 ? (pos ? INT_MAX : INT_MIN)
4924 }// namespace acwing87
4926 int acwing4308::main(istream &cin, ostream &cout) {
4932 for(int i = 1; i < s1.length(); i++) {
4933 const char ch = s1[i];
4944 int acwing4309::main(istream &cin, ostream &cout) {
4948 cin >> n >> x0 >> y0;
4950 unordered_set<double> slopes;
4951 for(int i = 0; i < n; i++) {
4956 double slope = static_cast<double>(y0 - yi) / (x0 - xi);
4957 slopes.insert(slope);
4962 cout << slopes.size() + (flag ? 1 : 0);
4966 namespace acwing4310 {
4967 int acwing4310::main(istream &cin, ostream &cout) {
4972 for(int i = 1; i <= n; i++) {
4973 um[i] = new TreeNode(i);
4975 for(int i = 2; i <= n; i++) {
4978 um[parent]->nexts[i] = um[i];
4981 for(int i = 0; i < vec.size(); i++) {
4982 position[vec[i]] = i;
4984 for(int i = 0; i < q; i++) {
4988 if(k > size_tree[u]) {
4991 cout << vec[position[u] + k - 1];
4995 for(auto [i, v]: um) {
5001 int acwing4310::dfs(vector<int> *vec, TreeNode *node) {
5003 vec->push_back(node->val);
5004 for(auto [i, next]: node->nexts) {
5005 if(next != nullptr) {
5006 sum += dfs(vec, next);
5009 size_tree[node->val] = sum;
5012 }// namespace acwing4310
5014 namespace acwing84 {
5015 int Solution::getSum(int n) {
5016 int ans = (1 + n) * (n / 2);
5022 }// namespace acwing84
5024 namespace acwing35 {
5025 ListNode *Solution::reverseList(ListNode *head) {
5026 if(head == nullptr) {
5030 auto *current = head->next;
5031 while(current != nullptr) {
5032 auto *next = current->next;
5033 current->next = prev;
5037 head->next = nullptr;
5040 }// namespace acwing35
5042 namespace acwing28 {
5043 void Solution::deleteNode(ListNode *node) {
5044 node->val = node->next->val;
5045 const auto *next = node->next;
5047 node->next = node->next->next;
5049 }// namespace acwing28
5051 namespace acwing66 {
5052 ListNode *Solution::findFirstCommonNode(ListNode *headA, ListNode *headB) {
5053 unordered_set<ListNode *> nodes;
5054 for(auto *current = headA; current != nullptr; current = current->next) {
5055 nodes.insert(current);
5057 for(auto *current = headB; current != nullptr; current = current->next) {
5058 if(nodes.contains(current)) {
5064 }// namespace acwing66
5066 namespace acwing36 {
5067 ListNode *Solution::merge(ListNode *l1, ListNode *l2) {
5068 auto *current = new ListNode(0);
5069 const ListNode *head = current;
5070 while(l1 != nullptr && l2 != nullptr) {
5071 if(l1->val < l2->val) {
5078 current = current->next;
5087 }// namespace acwing36
5089 namespace acwing29 {
5090 ListNode *Solution::deleteDuplication(ListNode *head) {
5091 if(head == nullptr) {
5094 while(head != nullptr && head->next != nullptr && head->val == head->next->val) {
5095 const int val = head->val;
5096 while(head != nullptr && head->val == val) {
5100 ListNode *ans = head;
5101 while(head != nullptr) {
5102 while(head->next != nullptr && head->next->next != nullptr && head->next->val == head->next->next->val) {
5103 const int val = head->next->val;
5104 ListNode *cursor = head->next;
5105 while(cursor != nullptr && cursor->val == val) {
5106 cursor = cursor->next;
5108 head->next = cursor;
5114 }// namespace acwing29
5116 namespace acwing67 {
5117 int Solution::getNumberOfK(vector<int> &nums, int k) {
5120 for(const auto num: nums) {
5130 }// namespace acwing67
5132 namespace acwing53 {
5133 vector<int> Solution::getLeastNumbers_Solution(vector<int> input, int k) {
5134 sort(input.begin(), input.end());
5135 return vector(input.begin(), input.begin() + k);
5137 }// namespace acwing53
5140 namespace acwing68 {
5141 int Solution::getMissingNumber(vector<int> &nums) {
5146 while(nums[i] == i) {
5151 }// namespace acwing68
5153 namespace acwing75 {
5154 vector<int> Solution::findNumbersWithSum(vector<int> &nums, int target) {
5156 set nms(nums.begin(), nums.end());
5157 for(auto num = nms.begin(); *num <= target / 2 && num != nms.end(); ++num) {
5158 if(nms.contains(target - *num)) {
5160 ans[1] = target - *num;
5166 }// namespace acwing75
5168 namespace acwing32 {
5169 void Solution::reOrderArray(vector<int> &array) {
5171 int r = array.size() - 1;
5173 while(l < r && array[l] % 2 == 1) {
5176 while(l < r && array[r] % 2 == 0) {
5180 swap(array[l], array[r]);
5184 }// namespace acwing32
5186 namespace acwing51 {
5187 vector<vector<int>> Solution::permutation(vector<int> &nums) {
5188 auto ans = vector<vector<int>>();
5190 dfs(vector<int>(), nums, s);
5191 for(const auto &vec: s) {
5197 void Solution::dfs(const vector<int> &vec, vector<int> nums, set<vector<int>> &s) {
5201 for(int i = 0; i < nums.size(); i++) {
5202 auto nums_cpy = vector(nums);
5203 auto vec_cpy = vector(vec);
5204 nums_cpy.erase(nums_cpy.begin() + i);
5205 vec_cpy.push_back(nums[i]);
5206 dfs(vec_cpy, nums_cpy, s);
5209 }// namespace acwing51
5211 namespace acwing17 {
5212 vector<int> Solution::printListReversingly(ListNode *head) {
5214 for(const auto *current = head; current != nullptr; current = current->next) {
5215 deq.push_front(current->val);
5217 return vector(deq.begin(), deq.end());
5219 }// namespace acwing17
5221 namespace acwing26 {
5222 int Solution::NumberOf1(int n) {
5224 unsigned int un = n;
5231 }// namespace acwing26
5233 namespace acwing20 {
5234 MyQueue::MyQueue() {
5235 main = vector<int>();
5236 tmp = vector<int>();
5239 void MyQueue::push(int x) { main.push_back(x); }
5241 int MyQueue::pop() {
5242 while(main.size() != 1) {
5243 tmp.push_back(main.back());
5246 const auto ret = main.back();
5248 while(!tmp.empty()) {
5249 main.push_back(tmp.back());
5255 int MyQueue::peek() {
5256 while(main.size() != 1) {
5257 tmp.push_back(main.back());
5260 const auto ret = main.back();
5261 while(!tmp.empty()) {
5262 main.push_back(tmp.back());
5268 bool MyQueue::empty() const { return main.empty(); }
5269 }// namespace acwing20
5271 int acwing862::main(istream &cin, ostream &cout) {
5274 auto comp = [](tuple<int, float, string> a, tuple<int, float, string> b) {
5275 auto [ax, ay, az] = std::move(a);
5276 auto [bx, by, bz] = std::move(b);
5279 set<tuple<int, float, string>, decltype(comp)> s(comp);
5280 for(int i = 0; i < n; i++) {
5285 s.insert(make_tuple(x, y, z));
5287 for(const auto &t: s) {
5289 cout << x << ' ' << fixed << setprecision(2) << y << ' ' << z << endl;
5294 int acwing4311::main(istream &cin, ostream &cout) {
5299 for(int i = 0; i < n; i++) {
5303 maximum = max(maximum, m * a / static_cast<double>(b));
5305 cout << fixed << setprecision(6) << maximum;
5309 int acwing3412::main(istream &cin, ostream &cout) {
5315 for(int i = 0; i < q; i++) {
5326 for(int i = 0; i + m <= n; i++) {
5327 string str = s.substr(i, m);
5330 sub_start.insert(i);
5331 sub_end.insert(i + m - 1);
5334 vector sub_end_count(n + 1, 0);
5335 vector sub_start_count(n + 1, 0);
5337 for(int i = 0; i < n + 1; i++) {
5338 if(sub_end.contains(i)) {
5341 sub_end_count[i] = current;
5344 for(int i = n; i >= 0; i--) {
5345 if(sub_start.contains(i)) {
5348 sub_start_count[i] = current;
5350 for(int i = 0; i < q; i++) {
5354 int ans = sub_end_count[r - 1] - (sub_count - sub_start_count[l - 1]);
5355 cout << max(ans, 0) << endl;
5360 int acwing3346::main(istream &cin, ostream &cout) {
5361 vector<int> nums(7);
5363 for(int i = 0; i < 7; i++) {
5366 sort(nums.begin(), nums.end());
5369 abc[2] = nums[6] - abc[0] - abc[1];
5370 sort(abc.begin(), abc.end());
5371 cout << abc[0] << ' ' << abc[1] << ' ' << abc[2];
5375 namespace acwing3358 {
5376 int main(istream &cin, ostream &cout) {
5377 int char_pos[26] = {};
5379 for(int i = 0; i < 26; i++) {
5381 char_pos[ch - 'a
'] = i;
5386 if(char_pos[ch - 'a
'] <= current) {
5389 current = char_pos[ch - 'a
'];
5394 };// namespace acwing3358
5396 namespace acwing3370 {
5397 int main(istream &cin, ostream &cout) {
5400 unordered_map<string, int> zodiacs;
5401 unordered_map<string, cow *> cows;
5403 zodiacs["Tiger"] = 1;
5404 zodiacs["Rabbit"] = 2;
5405 zodiacs["Dragon"] = 3;
5406 zodiacs["Snake"] = 4;
5407 zodiacs["Horse"] = 5;
5408 zodiacs["Goat"] = 6;
5409 zodiacs["Monkey"] = 7;
5410 zodiacs["Rooster"] = 8;
5412 zodiacs["Pig"] = 10;
5413 zodiacs["Rat"] = 11;
5414 cows["Bessie"] = new cow("Bessie", 0, zodiacs["Ox"]);
5415 for(int i = 0; i < n; i++) {
5419 cin >> name1 >> str >> str >> str;
5420 const bool previous = str == "previous";
5422 const int zodiac = zodiacs[str];
5423 cin >> str >> str >> name2;
5426 if(!cows.contains(name1)) {
5427 cow1 = new cow(name1, -1, zodiac);
5431 cow1->zodiac = zodiac;
5433 if(!cows.contains(name2)) {
5434 cow2 = new cow(name2, -1, -1);
5440 cow2->previous.push_back(cow1);
5441 cow1->next.push_back(cow2);
5443 cow2->next.push_back(cow1);
5444 cow1->previous.push_back(cow2);
5447 cout << abs(dfs(cows["Bessie"]));
5452 if(c->name == "Elsie") {
5455 for(auto *prev: c->previous) {
5456 if(prev->val == -1) {
5457 if(c->zodiac == prev->zodiac) {
5458 prev->val = c->val - 12;
5460 prev->val = c->val - (c->zodiac + 12 - prev->zodiac) % 12;
5462 const int ret = dfs(prev);
5468 for(auto *nxt: c->next) {
5469 if(nxt->val == -1) {
5470 if(c->zodiac == nxt->zodiac) {
5471 nxt->val = c->val + 12;
5473 nxt->val = c->val + (nxt->zodiac + 12 - c->zodiac) % 12;
5475 const int ret = dfs(nxt);
5484 cow::cow(string name, int val, int zodiac) {
5485 this->name = std::move(name);
5487 this->zodiac = zodiac;
5488 this->previous = vector<cow *>();
5489 this->next = vector<cow *>();
5491 }// namespace acwing3370
5493 namespace acwing3745 {
5494 int main(istream &cin, ostream &cout) {
5499 unordered_map<int, int> count;
5500 for(int i = 0; i < n; i++) {
5504 sort(c.rbegin(), c.rend());
5505 if(*c.begin() == 0) {
5515 while(h < n && c[h] >= h + 1) {
5523 for(int i = h - 1; i >= 0 && c[i] == h; i--) {
5526 if(l >= k + 1 && c[h] == h) {
5533 }// namespace acwing3745
5535 namespace acwing1459 {
5536 int main(istream &cin, ostream &cout) {
5540 auto hash = [](const pair<int, int> p) -> int { return p.first * 20 + p.second; };
5541 unordered_set<pair<int, int>, decltype(hash)> pairs;
5542 for(int i = 1; i <= n; i++) {
5543 for(int j = 1; j <= n; j++) {
5545 pairs.insert(make_pair(i, j));
5549 for(int i = 0; i < k; i++) {
5551 for(int j = 0; j < n; j++) {
5554 for(int j = 0; j + 1 < n; j++) {
5555 for(int l = j + 1; l < n; l++) {
5556 pairs.erase(make_pair(vec[j], vec[l]));
5560 cout << pairs.size();
5563 }// namespace acwing1459
5565 namespace acwing1442 {
5566 int main(istream &cin, ostream &cout) {
5570 vector<string> vec(n);
5571 for(int i = 0; i < n; i++) {
5576 int current = vec[0].length();
5577 for(int i = 1; i < n; i++) {
5578 if(current + vec[i].length() > k) {
5579 cout << oss.str() << endl;
5580 oss = ostringstream();
5582 current = vec[i].length();
5586 current += vec[i].length();
5592 }// namespace acwing1442
5594 namespace acwing4314 {
5595 int main(istream &cin, ostream &cout) {
5599 for(int a = 1; a <= n; a++) {
5600 for(int b = a; b <= n; b++) {
5601 const int c = a ^ b ^ 0;
5602 if(n >= c && c >= b && c < a + b) {
5610 }// namespace acwing4314
5612 namespace acwing4315 {
5613 int main(istream &cin, ostream &cout) {
5617 vector<long long> a(n);
5618 long long a_sum = 0;
5619 for(int i = 0; i < n; i++) {
5623 for(int i = 0; i < n; i++) {
5624 const long long low = max(static_cast<long long>(1), s - (a_sum - a[i]));
5625 const long long high = min(a[i], s - (n - 1));
5627 cout << a[i] - (high - low + 1) << ' ';
5632 }// namespace acwing4315
5634 namespace acwing1671 {
5635 int main(istream &cin, ostream &cout) {
5637 unordered_map<int, set<int>> col;
5638 unordered_map<int, set<int>> row;
5639 set<pair<int, int>> us;
5642 for(int i = 0; i < n; i++) {
5646 us.insert(make_pair(x, y));
5650 for(auto [x, y]: us) {
5651 const int max_width = max(abs(*row[x].begin() - y), abs(*row[x].rbegin() - y));
5652 const int max_height = max(abs(*col[y].begin() - x), abs(*col[y].rbegin() - x));
5653 ans = max(ans, max_width * max_height);
5658 }// namespace acwing1671
5660 namespace acwing1659 {
5661 int main(istream &cin, ostream &cout) {
5664 vector<bool> pen(n);
5668 for(int i = 0; i < n; i++) {
5669 pen[i] = str[i] == '1';
5678 vector<int> spaces2;
5679 vector<int> spaces1;
5687 spaces1.push_back(
left);
5690 while(!pen[
right]) {
5694 spaces1.push_back(n - 1 -
right);
5700 spaces2.push_back(current);
5706 sort(spaces2.begin(), spaces2.end());
5707 sort(spaces1.begin(), spaces1.end());
5708 if(!spaces2.empty()) {
5709 limit = *spaces2.begin();
5712 const int a = (*spaces2.rbegin() - 2) / 3;
5713 minimum = max(minimum, a);
5715 if(spaces2.size() > 1) {
5716 const int b = (spaces2[spaces2.size() - 2] - 1) / 2;
5717 minimum = max(minimum, b);
5720 if(!spaces1.empty()) {
5721 const int a = (*spaces2.rbegin() - 1) / 2;
5722 int b = *spaces1.rbegin() - 1;
5723 minimum = max(minimum, min(a, b));
5725 b = (*spaces1.rbegin() - 2) / 2;
5726 minimum = max(minimum, b);
5728 if(spaces1.size() > 1) {
5729 const int a = *spaces1.begin() - 1;
5730 minimum = max(minimum, a);
5735 if(spaces1.size() > 1) {
5736 const int a = *spaces1.begin() - 1;
5737 minimum = max(minimum, a);
5740 const int b = (*spaces1.rbegin() - 2) / 2;
5741 minimum = max(minimum, b);
5743 minimum = min(limit, minimum);
5744 cout << minimum + 1;
5749 namespace acwing1714 {
5750 int main(istream &cin, ostream &cout) {
5753 for(
int i = 0; i < 3; i++) {
5754 cin >> c[i] >> m[i];
5756 for(
int i = 0; i < 100; i++) {
5757 const int a = i % 3;
5758 const int b = (i + 1) % 3;
5759 if(m[a] + m[b] <= c[b]) {
5763 m[a] -= c[b] - m[b];
5767 for(
int i = 0; i < 3; i++) {
5768 cout << m[i] << endl;
5774 namespace acwing1695 {
5775 int main(istream &cin, ostream &cout) {
5776 bool nuts[3][3] = {{
true,
false,
false},
5777 {
false,
true,
false},
5778 {
false,
false,
true}};
5779 unsigned short score[3] = {0, 0, 0};
5780 unsigned short ans = 0;
5786 for(
unsigned short i = 0; i < n; i++) {
5791 for(
unsigned short j = 0; j < 3; j++) {
5792 swap(nuts[j][a], nuts[j][b]);
5798 for(
unsigned short i = 0; i < 3; i++) {
5799 ans = max(ans, score[i]);
5806 namespace acwing1683 {
5807 int main(istream &cin, ostream &cout) {
5810 cin >> pos[0] >> pos[1] >> pos[2];
5812 const int g1 = pos[1] - pos[0];
5813 const int g2 = pos[2] - pos[1];
5814 if(g1 == 2 || g2 == 2) {
5819 int ans2 = max(g1, g2);
5821 cout << ans1 << endl
5827 namespace acwing4318 {
5828 int main(istream &cin, ostream &cout) {
5833 set<pair<int, int>> s;
5834 s.insert(make_pair(0, 0));
5840 if(s.contains(make_pair(x, y)) ||
5841 s.contains(make_pair(x - 1, y)) ||
5842 s.contains(make_pair(x, y + 1)) ||
5843 s.contains(make_pair(x, y - 1))) {
5850 if(s.contains(make_pair(x, y)) ||
5851 s.contains(make_pair(x + 1, y)) ||
5852 s.contains(make_pair(x, y + 1)) ||
5853 s.contains(make_pair(x, y - 1))) {
5860 if(s.contains(make_pair(x, y)) ||
5861 s.contains(make_pair(x, y - 1)) ||
5862 s.contains(make_pair(x + 1, y)) ||
5863 s.contains(make_pair(x - 1, y))) {
5870 if(s.contains(make_pair(x, y)) ||
5871 s.contains(make_pair(x, y + 1)) ||
5872 s.contains(make_pair(x + 1, y)) ||
5873 s.contains(make_pair(x - 1, y))) {
5882 s.insert(make_pair(x, y));
5888 if(abs(x) <= 1 && y == 0 || x == 0 && abs(y) <= 1) {
5897 namespace acwing4319 {
5898 int main(istream &cin, ostream &cout) {
5902 vector<unsigned int> a(n);
5903 vector<vector<pair<unsigned int, unsigned int>>> factors(n);
5904 map<vector<pair<unsigned int, unsigned int>>,
unsigned int> factor_status_count;
5905 for(
int i = 0; i < n; i++) {
5907 for(
unsigned int factor = 2; factor * factor <= a[i]; factor++) {
5908 if(a[i] % factor != 0U) {
5911 unsigned int count = 0;
5912 while(a[i] % factor == 0) {
5918 factors[i].emplace_back(factor, count);
5922 factors[i].emplace_back(a[i], 1);
5925 unsigned long long ans = 0;
5926 for(
unsigned int i = 0; i < n; i++) {
5927 vector<pair<unsigned int, unsigned int>> factor_status;
5928 for(
auto [factor, count]: factors[i]) {
5929 factor_status.emplace_back(factor, k - count);
5931 ans += factor_status_count[factor_status];
5932 ++factor_status_count[factors[i]];
5939 namespace acwing1470 {
5940 int main(istream &cin, ostream &cout) {
5941 char farm[10][10] = {};
5944 for(
int i = 0; i < 10; i++) {
5945 for(
int j = 0; j < 10; j++) {
5947 if(farm[i][j] ==
'B') {
5948 b = make_pair(i, j);
5949 }
else if(farm[i][j] ==
'L') {
5950 l = make_pair(i, j);
5954 priority_queue<status> pq;
5955 pq.push(
status(0, l, b));
5956 while(!pq.empty()) {
5963 pair<int, int> nexts[4] = {make_pair(s.
current.first + 1, s.
current.second),
5967 for(
const auto next: nexts) {
5968 if(0 <= next.first && next.first < 10 && 0 <= next.second && next.second < 10 && farm[next.first][next.second] !=
'R') {
5981 namespace acwing1761 {
5982 int main(istream &cin, ostream &cout) {
5987 for(
int i = 0; i < 3; i++) {
5988 cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
5990 unsigned int area = 0;
5991 for(
int i = 0; i < 2; i++) {
5992 area += abs(x2[i] - x1[i]) * abs(y2[i] - y1[i]);
5997 x_1 = max(x_1, x1[i]);
5998 x_2 = max(x_2, x1[i]);
5999 x_1 = min(x_1, x2[i]);
6000 x_2 = min(x_2, x2[i]);
6001 y_1 = max(y_1, y1[i]);
6002 y_2 = max(y_2, y1[i]);
6003 y_1 = min(y_1, y2[i]);
6004 y_2 = min(y_2, y2[i]);
6005 area -= abs(x_2 - x_1) * abs(y_2 - y_1);
6012 namespace acwing1749 {
6013 int main(istream &cin, ostream &cout) {
6018 for(
int i = 0; i < 2; i++) {
6019 cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
6021 const unsigned int area = abs(x2[0] - x1[0]) * abs(y2[0] - y1[0]);
6026 x_1 = max(x_1, x1[0]);
6027 x_2 = max(x_2, x1[0]);
6028 x_1 = min(x_1, x2[0]);
6029 x_2 = min(x_2, x2[0]);
6030 y_1 = max(y_1, y1[0]);
6031 y_2 = max(y_2, y1[0]);
6032 y_1 = min(y_1, y2[0]);
6033 y_2 = min(y_2, y2[0]);
6034 if(x_2 == x_1 || y_2 == y_1) {
6039 if(y_2 == y2[0] && y_1 == y1[0]) {
6041 cout << abs(abs(x2[0] - x1[0]) - abs(x_2 - x_1)) * abs(y_2 - y_1);
6044 if(x_1 == x1[0] && x_2 == x2[0] && (y_1 == y1[0] || y_2 == y2[0])) {
6046 cout << (x_2 - x_1) * max(y2[0] - y_2, y_1 - y1[0]);
6054 namespace acwing1737 {
6055 int main(istream &cin, ostream &cout) {
6060 cin >> a >> b >> x >> y;
6061 const int d1 = abs(b - a);
6062 const int d2 = abs(a - x) + abs(b - y);
6063 const int d3 = abs(a - y) + abs(b - x);
6064 cout << min(d1, min(d2, d3));
6069 namespace acwing1725 {
6070 int main(istream &cin, ostream &cout) {
6071 unordered_set<char> row[3];
6072 unordered_set<char> col[3];
6073 unordered_set<char> main_diagonal;
6074 unordered_set<char> leading_diagonal;
6075 unordered_set<char> win_1;
6076 auto hash = [](
const pair<char, char> &p) {
6077 vector
vec = {p.first, p.second};
6078 sort(
vec.begin(),
vec.end());
6079 unsigned int val = 0;
6080 for(
auto &ch:
vec) {
6087 unordered_set<pair<char, char>,
decltype(hash)> win_2;
6089 for(
int i = 0; i < 3; i++) {
6090 for(
int j = 0; j < 3; j++) {
6092 row[i].insert(board[i][j]);
6093 col[j].insert(board[i][j]);
6096 main_diagonal.insert(board[0][0]);
6097 main_diagonal.insert(board[1][1]);
6098 main_diagonal.insert(board[2][2]);
6099 leading_diagonal.insert(board[0][2]);
6100 leading_diagonal.insert(board[1][1]);
6101 leading_diagonal.insert(board[2][0]);
6102 for(
int i = 0; i < 3; i++) {
6103 if(row[i].size() == 1) {
6104 win_1.insert(board[i][0]);
6105 }
else if(row[i].size() == 2) {
6106 win_2.insert(make_pair(*row[i].begin(), *++row[i].begin()));
6108 if(col[i].size() == 1) {
6109 win_1.insert(board[0][i]);
6110 }
else if(col[i].size() == 2) {
6111 win_2.insert(make_pair(*col[i].begin(), *++col[i].begin()));
6114 if(main_diagonal.size() == 1) {
6115 win_1.insert(board[1][1]);
6116 }
else if(main_diagonal.size() == 2) {
6117 win_2.insert(make_pair(*main_diagonal.begin(), *++main_diagonal.begin()));
6119 if(leading_diagonal.size() == 1) {
6120 win_1.insert(board[1][1]);
6121 }
else if(leading_diagonal.size() == 2) {
6122 win_2.insert(make_pair(*leading_diagonal.begin(), *++leading_diagonal.begin()));
6124 cout << win_1.size() << endl
6130 namespace acwing4394 {
6131 int main(istream &cin, ostream &cout) {
6135 vector<unsigned>
vec(n);
6136 for(
unsigned i = 0; i < n; i++) {
6143 vector<unsigned> um(1000001, 0);
6150 if(um[
vec[r]] == 0) {
6160 cout << max_l + 1 <<
' ' << max_r + 1;
6167 if(um[
vec[l]] == 0) {
6173 if(um[
vec[r]] == 0) {
6182 cout << max_l + 1 <<
' ' << max_r + 1;
6186 cout << max_l + 1 <<
' ' << max_r + 1;
6191 namespace acwing1812 {
6192 int main(istream &cin, ostream &cout) {
6195 for(
int i = 0; i < 2; i++) {
6196 cin >> x[i][0] >> y[i][0] >> x[i][1] >> y[i][1];
6198 const int x1 = min(x[0][0], x[1][0]);
6199 const int x2 = max(x[0][1], x[1][1]);
6200 const int y1 = min(y[0][0], y[1][0]);
6201 const int y2 = max(y[0][1], y[1][1]);
6202 const int edge = max(y2 - y1, x2 - x1);
6203 cout << edge * edge;
6208 namespace acwing1800 {
6209 int main(istream &cin, ostream &cout) {
6210 unordered_map<string, unsigned> um;
6215 um[
"Annabelle"] = 0;
6217 um[
"Henrietta"] = 0;
6222 unsigned minimum = 0;
6224 cin >> name >> amount;
6226 minimum = max(minimum, um[name]);
6228 unsigned second_minimum = minimum;
6229 for(
auto &[name, amount]: um) {
6230 minimum = min(minimum, amount);
6232 for(
auto &[name, amount]: um) {
6233 if(amount != minimum && amount < second_minimum) {
6234 second_minimum = amount;
6238 for(
auto &[name, amount]: um) {
6239 if(second_minimum == amount) {
6253 namespace acwing1788 {
6254 int main(istream &cin, ostream &cout) {
6256 unordered_map<int, int> um;
6263 if(!um.contains(
id)) {
6265 }
else if(um[
id] != side) {
6275 namespace acwing1775 {
6276 int main(istream &cin, ostream &cout) {
6283 while(current != y) {
6284 if((y - current) * (y - (x + step)) < 0) {
6285 ans += abs(y - current);
6289 ans += abs(x + step - current);
6298 namespace acwing785 {
6299 void qs(vector<int> &
vec,
int l,
int r) {
6303 const int x =
vec[l + r >> 1];
6307 while(
vec[++lp] < x) {}
6308 while(
vec[--rp] > x) {}
6317 int main(istream &cin, ostream &cout) {
6321 for(
int i = 0; i < n; i++) {
6325 for(
int i = 0; i < n; i++) {
6326 cout <<
vec[i] <<
' ';
6333 namespace acwing788 {
6334 void ms(vector<int> &arr,
int l,
int r,
int *ans) {
6338 const int m = l + r >> 1;
6340 ms(arr, m + 1, r, ans);
6344 vector<int> tmp(r - l + 1);
6345 while(i <= m && j <= r) {
6346 if(arr[i] <= arr[j]) {
6347 tmp[p++] = arr[i++];
6349 tmp[p++] = arr[j++];
6354 tmp[p++] = arr[i++];
6357 tmp[p++] = arr[j++];
6359 for(
int i = 0; i < p; i++) {
6360 arr[l + i] = tmp[i];
6364 int main(istream &cin, ostream &cout) {
6368 for(
int i = 0; i < n; i++) {
6372 ms(
vec, 0, n - 1, &ans);
6378 namespace acwing789 {
6380 long bfl(
const vector<long> &
vec,
long target) {
6382 int r =
vec.size() - 1;
6384 const int m = (l + r + 1) / 2;
6385 if(
vec[m] <= target) {
6391 if(
vec[l] != target) {
6397 long bfr(
const vector<long> &
vec,
long target) {
6399 int r =
vec.size() - 1;
6401 const int m = (l + r) / 2;
6402 if(
vec[m] < target) {
6408 if(
vec[l] != target) {
6414 int main(istream &cin, ostream &cout) {
6418 vector<long>
vec(n);
6419 for(
long i = 0; i < n; i++) {
6422 for(
long i = 0; i < q; i++) {
6431 namespace acwing1866 {
6432 int main(istream &cin, ostream &cout) {
6437 cin >> a >> b >> c >> d;
6438 const int ab = b - a;
6439 const int cd = d - c;
6440 const int dup_d = min(b, max(a, d));
6441 const int dup_c = min(b, max(a, c));
6442 const int sum = ab + cd - (dup_d - dup_c);
6448 namespace acwing1854 {
6449 int main(istream &cin, ostream &cout) {
6451 for(
int i = 0; i < 4; i++) {
6452 for(
int j = 0; j < 2; j++) {
6457 ans[2] = b[3][1] - b[3][0];
6459 ans[1] = b[2][1] - b[2][0];
6461 ans[0] = b[1][1] - b[1][0];
6462 for(
int i = 0; i < 3; i++) {
6463 cout << ans[i] << endl;
6469 namespace acwing4397 {
6470 bool cmp(
const pair<int, int> &a,
const pair<int, int> &b) {
return a.first > b.first; }
6472 int main(istream &cin, ostream &cout) {
6478 vector<pair<int, int>> a_b(n);
6479 for(
int i = 0; i < n; i++) {
6482 for(
int i = 0; i < n; i++) {
6484 a_b[i] = make_pair(a[i] - b[i], i);
6486 sort(a_b.begin(), a_b.end(),
cmp);
6487 for(
int i = 0; i < k; i++) {
6488 if(a_b[i].first > 0) {
6489 a[a_b[i].second] = b[a_b[i].second];
6495 for(
int i = 0; i < n; i++) {
6503 namespace acwing4398 {
6505 if(!this->
nexts.contains(str[start])) {
6511 if(str.length() - start != 1) {
6512 this->
nexts[str[start]]->insert(str, start + 1,
origin);
6517 this->
ch = this->
ch;
6518 if(this->
nexts.contains(str[start])) {
6519 if(start + 1 == str.length()) {
6520 return this->
nexts[str[start]];
6522 return this->
nexts[str[start]]->search(str, start + 1);
6528 for(
const auto [k, v]: this->
nexts) {
6533 int main(istream &cin, ostream &cout) {
6538 vector<string> f(n);
6539 for(
int i = 0; i < n; i++) {
6541 for(
int j = 0; j < f[i].length(); ++j) {
6542 tn.
insert(f[i], j, &f[i]);
6546 for(
int i = 0; i < q; i++) {
6550 if(node ==
nullptr) {
6551 cout <<
"0 -" << endl;
6553 cout << node->
origin.size() <<
' ' << **node->
origin.begin() << endl;
6560 namespace acwing1842 {
6561 int main(istream &cin, ostream &cout) {
6567 for(
int i = 0; y * i <= m; ++i) {
6569 amount += (m - amount) / x * x;
6570 ans = max(ans, amount);
6577 namespace acwing1824 {
6578 int main(istream &cin, ostream &cout) {
6582 vector
vec(10010, 0);
6584 for(
int i = 0; i < n; i++) {
6588 vector sum(10010, 0);
6589 for(
int i = 1; i < 10010; i++) {
6590 sum[i] = sum[i - 1] +
vec[i];
6593 for(
int i = 1; i + k < 10010; i++) {
6594 ans = max(ans, sum[i + k] - sum[i - 1]);
6601 namespace acwing800 {
6602 int main(istream &cin, ostream &cout) {
6609 for(
int i = 0; i < n; i++) {
6612 for(
int i = 0; i < m; i++) {
6617 while(a[pa] + b[pb] < x) {
6620 for(; pa < n; pa++) {
6621 if(a[pa] + b[pb] == x) {
6622 cout << pa <<
' ' << pb;
6625 while(a[pa] + b[pb] > x) {
6627 if(a[pa] + b[pb] == x) {
6628 cout << pa <<
' ' << pb;
6637 namespace acwing2816 {
6638 int main(istream &cin, ostream &cout) {
6644 for(
int i = 0; i < n; i++) {
6647 for(
int i = 0; i < m; i++) {
6652 for(; pa < n; ++pa) {
6653 while(pb < m && b[pb] != a[pa]) {
6667 namespace acwing1902 {
6668 int main(istream &cin, ostream &cout) {
6671 vector<pair<int, int>> checkpoints(n);
6672 vector<int> d(n - 1);
6673 for(
int i = 0; i < n; i++) {
6677 checkpoints[i] = make_pair(x, y);
6680 for(
int i = 0; i < n - 1; i++) {
6681 const auto &[x1, y1] = checkpoints[i];
6682 const auto &[x2, y2] = checkpoints[i + 1];
6683 d[i] = abs(x2 - x1) + abs(y2 - y1);
6687 for(
int i = 1; i < n - 1; i++) {
6688 const auto &[x1, y1] = checkpoints[i - 1];
6689 const auto &[x2, y2] = checkpoints[i + 1];
6690 const int dist = abs(x2 - x1) + abs(y2 - y1);
6691 int diff = d[i - 1] + d[i] - dist;
6692 max_diff = max(max_diff, diff);
6694 cout << sum - max_diff;
6699 namespace acwing3302 {
6700 int main(istream &cin, ostream &cout) {
6705 while((ch = cin.peek()) > 0) {
6706 if(isdigit(ch) != 0) {
6708 if(!ops.empty() && ops.top() ==
'*') {
6709 num = nums.top() * num;
6713 }
else if(!ops.empty() && ops.top() ==
'/') {
6714 num = nums.top() / num;
6724 vector<char> vec_op;
6725 vector<int> vec_num;
6726 vec_num.push_back(nums.top());
6728 while(ops.top() !=
'(') {
6729 vec_op.push_back(ops.top());
6730 vec_num.push_back(nums.top());
6735 for(
int i = vec_op.size() - 1; i >= 0; --i) {
6736 if(vec_op[i] ==
'+') {
6737 vec_num.back() += vec_num[i];
6738 }
else if(vec_op[i] ==
'-') {
6739 vec_num.back() -= vec_num[i];
6744 num = vec_num.back();
6745 if(!ops.empty() && ops.top() ==
'*') {
6746 num = nums.top() * num;
6750 }
else if(!ops.empty() && ops.top() ==
'/') {
6751 num = nums.top() / num;
6763 vector<char> vec_op;
6764 vector<int> vec_num;
6765 vec_num.push_back(nums.top());
6767 while(!ops.empty()) {
6768 vec_op.push_back(ops.top());
6769 vec_num.push_back(nums.top());
6773 for(
int i = vec_op.size() - 1; i >= 0; --i) {
6774 if(vec_op[i] ==
'+') {
6775 vec_num.back() += vec_num[i];
6776 }
else if(vec_op[i] ==
'-') {
6777 vec_num.back() -= vec_num[i];
6782 cout << vec_num.back();
6787 namespace acwing831 {
6788 int main(istream &cin, ostream &cout) {
6793 cin >> n >> p >> m >> s;
6794 const vector<int> next =
get_next(p);
6797 while(ip < n && is < m) {
6798 if(p[ip] == s[is]) {
6801 cout << is - n + 1 <<
' ';
6822 const int n = str.length();
6826 while(i < n && j < n) {
6827 if(str[i] == str[j]) {
6846 namespace acwing1892 {
6847 int main(istream &cin, ostream &cout) {
6853 for(
int i = 0; i < n; i++) {
6857 cin >> price >> num;
6859 for(
int j = 0; j < num; j++) {
6863 }
else if(flag && city == b) {
6864 ans = min(ans, price);
6877 namespace acwing1883 {
6878 int main(istream &cin, ostream &cout) {
6883 const int slen = s.length();
6884 const int tlen = t.length();
6886 for(
int i = 0; i < slen; i++) {
6890 while(res.length() >= tlen && res.substr(res.length() - tlen, tlen) == t) {
6892 res.erase(res.begin() + res.length() - tlen, res.end());
6900 namespace acwing1995 {
6901 int main(istream &cin, ostream &cout) {
6914 for(
int i = 0; i < dist; i++) {
6915 pos_b.push_back(pos_b.back() - 1);
6918 for(
int i = 0; i < dist; i++) {
6919 pos_b.push_back(pos_b.back() + 1);
6928 for(
int i = 0; i < dist; i++) {
6929 pos_e.push_back(pos_e.back() - 1);
6932 for(
int i = 0; i < dist; i++) {
6933 pos_e.push_back(pos_e.back() + 1);
6937 const int t = max(pos_e.size(), pos_b.size());
6940 for(
int i = 0; i < t; i++) {
6941 const int pe = i < pos_e.size() ? pos_e[i] : pos_e.back();
6942 const int pb = i < pos_b.size() ? pos_b[i] : pos_b.back();
6957 namespace acwing143 {
6958 int main(istream &cin, ostream &cout) {
6961 vector<string>
vec(n);
6963 for(
int j = 0; j < n; j++) {
6967 for(
int i = 30; i >= 0; i--) {
6968 oss << ((a & 1 << i) != 0U ?
'1' :
'0');
6970 string str = oss.str();
6974 unsigned maximum = 0;
6975 for(
const auto &str:
vec) {
6978 for(
int i = 0; i <= 30; i++) {
6980 if(current->
next[str[i] -
'0' == 0] !=
nullptr) {
6981 current = current->
next[str[i] -
'0' == 0];
6984 current = current->
next[str[i] -
'0'];
6987 maximum = max(maximum, ans);
6994 if(this->
next[str[i] -
'0'] ==
nullptr) {
6996 this->
next[str[i] -
'0']->
val = str[i] -
'0';
6998 if(i + 1 < str.length()) {
6999 this->
next[str[i] -
'0']->
insert(str, i + 1);
7004 namespace acwing837 {
7005 int main(istream &cin, ostream &cout) {
7017 uf.
unite(a - 1, b - 1);
7018 }
else if(op ==
"Q1") {
7020 cout << (uf.
same(a - 1, b - 1) ?
"Yes" :
"No") << endl;
7023 cout << uf.
get_size(a - 1) << endl;
7030 namespace acwing240 {
7031 int main(istream &cin, ostream &cout) {
7042 if(x > n || y > n) {
7048 const int px = uf.
find(x);
7049 const int py = uf.
find(y);
7052 if((uf.
dist[x] - uf.
dist[y]) % 3 != 0) {
7065 if((uf.
dist[x] - uf.
dist[y] - 1) % 3 != 0) {
7080 dist = vector(n, 0);
7081 for(
int i = 0; i < n; i++) {
7096 namespace acwing845 {
7097 int main(istream &cin, ostream &cout) {
7098 array<array<char, 3>, 3> target{};
7099 array<array<char, 3>, 3> grid{};
7100 unordered_set<array<array<char, 3>, 3>,
hash> us;
7103 for(
int i = 0; i < 9; i++) {
7104 cin >> grid[i / 3][i % 3];
7105 if(grid[i / 3][i % 3] ==
'x') {
7109 target[i / 3][i % 3] = i +
'1';
7112 queue<tuple<array<array<char, 3>, 3>, int, int,
int>> q;
7113 q.push(make_tuple(grid, 0, start_x, start_y));
7116 auto [g, step, x, y] = q.front();
7122 pair<int, int> nexts[4] = {
7123 make_pair(x, y + 1),
7124 make_pair(x, y - 1),
7125 make_pair(x + 1, y),
7126 make_pair(x - 1, y)};
7127 for(
auto &[nx, ny]: nexts) {
7128 if(nx >= 0 && nx < 3 && ny >= 0 && ny < 3) {
7129 swap(g[nx][ny], g[x][y]);
7130 if(!us.contains(g)) {
7132 q.push(make_tuple(g, step + 1, nx, ny));
7134 swap(g[nx][ny], g[x][y]);
7143 unsigned int ret = 0;
7144 for(
int i = 0; i < 9; i++) {
7145 char v = g[i / 3][i % 3];
7156 namespace acwing849 {
7157 bool comp::operator()(
const pair<int, int> &p1,
const pair<int, int> &p2)
const {
return p1.second > p2.second; }
7159 int main(istream &cin, ostream &cout) {
7163 vector<unordered_map<int, int>>
vec(n + 1);
7164 unordered_set<int> ed;
7165 for(
int i = 0; i < m; i++) {
7170 if(
vec[x][y] == 0) {
7173 vec[x][y] = min(
vec[x][y], z);
7176 priority_queue<pair<int, int>, vector<pair<int, int>>,
comp> pq;
7177 pq.push(make_pair(1, 0));
7178 while(!pq.empty()) {
7179 auto [node, dist] = pq.top();
7181 if(ed.contains(node)) {
7189 for(
auto [next_node, d]:
vec[node]) {
7190 if(!ed.contains(next_node)) {
7191 pq.push(make_pair(next_node, dist + d));
7200 namespace acwing853 {
7201 int main(istream &cin, ostream &cout) {
7206 vector<tuple<int, int, int>>
vec(m);
7207 vector shortest(n + 1, 0x3f3f3f);
7209 for(
int i = 0; i < m; i++) {
7214 vec[i] = make_tuple(x, y, z);
7216 for(
int i = 0; i < k; i++) {
7217 vector<int> shortest_cpy = shortest;
7218 for(
auto [x, y, z]:
vec) {
7219 shortest[y] = min(shortest[y], shortest_cpy[x] + z);
7222 if(shortest[n] > 0x3f3f3f / 2) {
7223 cout <<
"impossible";
7225 cout << shortest[n];
7231 namespace acwing851 {
7232 int main(istream &cin, ostream &cout) {
7236 vector<unordered_map<int, int>> g(n + 1);
7237 vector reachable(n + 1,
false);
7238 vector shortest(n + 1, 0x3f3f3f);
7239 for(
int i = 0; i < m; i++) {
7247 g[x][y] = min(g[x][y], z);
7251 unordered_set<int> us;
7255 reachable[1] =
true;
7257 int node = q.front();
7260 for(
auto [next_node, d]: g[node]) {
7261 reachable[next_node] =
true;
7262 if(shortest[next_node] > shortest[node] + d) {
7263 shortest[next_node] = shortest[node] + d;
7264 if(!us.contains(next_node)) {
7266 us.insert(next_node);
7272 cout <<
"impossible";
7274 cout << shortest[n];
7280 namespace acwing852 {
7281 int main(istream &cin, ostream &cout) {
7285 vector<unordered_map<int, int>> g(n + 1);
7286 vector cnt(n + 1, 0);
7287 vector shortest(n + 1, 0x3f3f3f);
7288 for(
int i = 0; i < m; i++) {
7296 g[x][y] = min(g[x][y], z);
7299 for(
int i = 1; i <= n; i++) {
7310 bool spfa(
const vector<unordered_map<int, int>> &g,
int ,
int n) {
7311 vector cnt(n + 1, 0);
7312 vector shortest(n + 1, 0x3f3f3f);
7314 unordered_set<int> us;
7319 int node = q.front();
7322 for(
auto [next_node, d]: g[node]) {
7323 if(shortest[next_node] > shortest[node] + d) {
7324 shortest[next_node] = shortest[node] + d;
7325 cnt[next_node] = cnt[node] + 1;
7326 if(cnt[next_node] >= n + 1) {
7329 if(!us.contains(next_node)) {
7331 us.insert(next_node);
7340 namespace acwing854 {
7341 int main(istream &cin, ostream &cout) {
7346 vector g(n + 1, vector<int>(n + 1, 1e9));
7347 for(
int i = 0; i < m; i++) {
7352 g[x][y] = min(g[x][y], z);
7354 for(
int i = 1; i <= n; i++) {
7357 for(
int l = 1; l <= n; l++) {
7358 for(
int i = 1; i <= n; i++) {
7359 for(
int j = 1; j <= n; j++) {
7360 g[i][j] = min(g[i][j], g[i][l] + g[l][j]);
7364 for(
int i = 0; i < k; i++) {
7368 if(g[x][y] > 1e9 / 2) {
7369 cout <<
"impossible" << endl;
7371 cout << g[x][y] << endl;
7378 namespace acwing858 {
7379 int main(istream &cin, ostream &cout) {
7383 vector g(n + 1, vector(n + 1, INT_MAX));
7384 vector dist(n + 1, INT_MAX);
7385 for(
unsigned i = 0; i < m; i++) {
7390 w = min(w, g[u][v]);
7391 w = min(w, g[v][u]);
7395 unordered_set<int> us;
7397 for(
int i = 0; i < n; i++) {
7399 for(
int j = 1; j <= n; j++) {
7400 if(!us.contains(j) && (t == -1 || dist[t] > dist[j])) {
7404 if(i > 0 && dist[t] == INT_MAX) {
7405 cout <<
"impossible";
7411 for(
int j = 1; j <= n; j++) {
7412 dist[j] = min(dist[j], g[t][j]);
7421 namespace acwing859 {
7422 int main(istream &cin, ostream &cout) {
7428 vector<edge> edges(m);
7429 for(
int i = 0; i < m; i++) {
7433 cin >> edges[i].u >> edges[i].v >> edges[i].w;
7435 sort(edges.begin(), edges.end());
7437 for(
const auto &
edge: edges) {
7445 cout <<
"impossible";
7455 namespace acwing860 {
7456 int main(istream &cin, ostream &cout) {
7460 vector g(n + 1, unordered_set<int>());
7461 vector color(n + 1, 3);
7462 for(
int i = 0; i < m; i++) {
7469 for(
int i = 1; i <= n; i++) {
7471 if(!
dfs(g, i, color, 0)) {
7481 bool dfs(vector<unordered_set<int>> &g,
int node, vector<int> &color,
int c) {
7483 for(
const auto sibling: g[node]) {
7484 if(color[sibling] == 3) {
7485 if(!
dfs(g, sibling, color, c == 0)) {
7488 }
else if(color[sibling] == c) {
7496 namespace acwing861 {
7497 int main(istream &cin, ostream &cout) {
7501 cin >> n1 >> n2 >> m;
7503 vector<unordered_set<int>> g(n1 + 1);
7504 vector match(n2 + 1, 0);
7505 vector st(n2 + 1,
false);
7506 for(
int i = 0; i < m; i++) {
7512 for(
int i = 1; i <= n1; i++) {
7513 st = vector(n2 + 1,
false);
7514 if(
find(g, i, st, match)) {
7522 bool find(vector<unordered_set<int>> &g,
int x, vector<bool> &st, vector<int> &match) {
7523 for(
const auto y: g[x]) {
7526 if(match[y] == 0 ||
find(g, match[y], st, match)) {
7536 namespace acwing3373 {
7537 int main(istream &cin, ostream &cout) {
7539 while(cin >> input) {
7544 unsigned short promotion = 0;
7545 vector<unsigned short> result = vector<unsigned short>();
7546 vector<unsigned short> charvec = vector<unsigned short>(input.length());
7547 for(
auto i = 0; i < input.length(); i++) {
7548 charvec[i] = input[i] -
'0';
7550 vector<unsigned short> next = vector<unsigned short>();
7551 while(!charvec.empty() && !(charvec.size() == 1 && charvec[0] == 0)) {
7552 for(
unsigned short d: charvec) {
7553 unsigned short digit = promotion * 10 + d;
7554 if(digit / 2 > 0 || !next.empty()) {
7555 next.push_back(digit / 2);
7557 promotion = digit % 2;
7559 result.push_back(promotion);
7564 for(
auto i = result.rbegin(); i != result.rend(); i++) {
int main(int argc, char **argv)
void flood(point first, bool occupy[55][55], unordered_set< point, pointhash, pointequal > *edge, char cowhide[55][55], int n, int m)
int bfs(point start, int **field, int max_x, int max_y)
direction operator!(const direction &d)
取反方向
direction reflect(direction d, char mirror)
方向经过镜子反射后的变化
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
void qs(vector< int > &vec, int l, int r)
int main(istream &cin, ostream &cout)
void ms(vector< int > &arr, int l, int r, int *ans)
long bfl(const vector< long > &vec, long target)
int main(istream &cin, ostream &cout)
long bfr(const vector< long > &vec, long target)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool cmp(const pair< int, int > &a, const pair< int, int > &b)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
vector< int > get_next(const string &str)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool spfa(const vector< unordered_map< int, int > > &g, int, int n)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool dfs(vector< unordered_set< int > > &g, int node, vector< int > &color, int c)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool find(vector< unordered_set< int > > &g, int x, vector< bool > &st, vector< int > &match)
int main(istream &cin, ostream &cout)
void reverse(struct ListNode *head)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
size_t operator()(const point &) const
bool operator()(const point &, const point &) const
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int dfs(bool stage, char horseshoes[5][5], const bool picked[5][5], int count, int level, int x, int y, int n)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
trie_node(int val, trie_node *father)
void insert(string str)
反向插入
static bool cmp(char x, char y)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
bool operator<(const path &p) const
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
bool * decompress(unsigned int status) const
unsigned int compress(const bool *) const
int main(istream &, ostream &)
unsigned int get_next(unsigned int status)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &, ostream &)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static unsigned int no2(unsigned long long a)
static unsigned int no3(unsigned long long a)
static bool cmp(unsigned long long a, unsigned long long b)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
unsigned long operator()(const step &) const
bool operator()(const step &, const step &) const
char mirrors[1000][1000]
镜子
unsigned int count_reflect(direction d, unsigned int x, unsigned int y)
获取反射的次数
int main(istream &cin, ostream &cout)
unsigned(* get_record(direction d))[1000]
获取记录类型
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static unsigned long long get_min(vector< char > ops, vector< unsigned long long > vec)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
bool operator()(const pair< unsigned int, unsigned int > &left, const pair< unsigned int, unsigned int > &right) const
bool operator()(const pair< unsigned int, unsigned int > &left, const pair< unsigned int, unsigned int > &right) const
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
vector< pair< int, int > > back
bool check(int len) const
vector< pair< int, int > > forth
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
bool operator<(const status &s) const
unordered_map< char, TrieNode * > nexts
TrieNode * search(const string &str, int start)
void insert(const string &str, int start, string *origin)
unordered_set< string * > origin
void insert(const string &str, int i)
unsigned int operator()(const array< array< char, 3 >, 3 > &g) const
bool operator()(const pair< int, int > &p1, const pair< int, int > &p2) const
bool operator<(const edge &e) const