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) {
733 this->
nexts[str[0] -
'0']->insert(str.substr(1));
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++) {
886 cin >> length >> direction;
887 if(direction ==
'R') {
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;
1390 sort(vec.begin(), vec.end(),
cmp);
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;
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) {
2058 return vec[0] + vec[1];
2060 return vec[0] * vec[1];
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));
2495 bool cmprow::operator()(
const pair<unsigned int, unsigned int> &left,
const pair<unsigned int, unsigned int> &right)
const {
return left.first < right.first; }
2497 bool cmpcol::operator()(
const pair<unsigned int, unsigned int> &left,
const pair<unsigned int, unsigned int> &right)
const {
return left.second < right.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++) {
3190 left[i] = left[i - 1] + d[i - 1];
3191 us.insert(make_pair(left[i], i));
3194 unsigned long long ans = 0;
3195 for(
int i = n - 1; i >= 0; i--) {
3196 right[i] = right[i + 1] + d[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') {
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) {
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") {
3752 auto *str =
new char[201];
3753 cin.getline(str, 201);
3755 for(
int i = 0; str[i] !=
'\0'; i++) {
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)) {
3797 for(
int i = 0; i < n; i++) {
3807 if(pos <= 1 || neg <= 1) {
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));
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) {
3897 auto *str =
new char[101];
3898 cin.getline(str, 101);
3899 for(
int i = 0; str[i] !=
'\0'; i++) {
3900 cout << str[i] <<
" ";
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';
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]);
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] <<
" ";
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;
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;
4027 bool prev_eq =
true;
4029 for(
int i = 0; i < n; i++) {
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) {
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;
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) {
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;
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] <<
" ";
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;
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;
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);
4241 for(
int i = 0; i < n; i++) {
4250 cout << sum_b + sum_c;
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;
4292 auto vec = vector<unsigned int>();
4293 for(
int i = 0; i < n; i++) {
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);
4326 unsigned int ans = 0;
4327 for(
const char ch: str) {
4328 ans |= 1 << ch -
'a';
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));
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;
4381 return n *
fact(n - 1);
4414 cout << fixed << setprecision(2) <<
add(x, y);
4430 const int t = a % b;
4446 int sum = (l + r) * ((r - l + 1) / 2);
4447 if((r - l + 1) % 2 == 1) {
4458 cout << x <<
" " << y;
4485 auto *a =
new int[n];
4486 for(
int i = 0; i < n; i++) {
4489 print(a, size, cout);
4495 for(
int i = 0; i < size; i++) {
4496 cout << a[i] <<
" ";
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] <<
" ";
4521 for(
int i = 0; i < size; i++) {
4527 for(
int i = 0; i < row; i++) {
4528 for(
int j = 0; j < col; j++) {
4529 cout << a[i][j] <<
" ";
4540 for(
int i = 0; i < row; i++) {
4541 for(
int j = 0; j < col; j++) {
4550 auto *str =
new char[101];
4551 cin.getline(str, 101);
4557 for(
int i = 0; str[i] !=
'\0'; i++) {
4565 char fibb[1001] = {};
4566 memset(fibb,
'o',
sizeof fibb);
4570 unsigned int next = a + b;
4577 for(
int i = 1; i <= n; i++) {
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];
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) {
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);
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] <<
" ";
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;
4725 auto *a =
new int[n];
4726 for(
int i = 0; i < n; i++) {
4735 unordered_set<int> um;
4736 for(
int i = 0; i < n; i++) {
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] <<
" ";
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);
4799 auto *dp =
new int[n + 1];
4800 memset(dp, 0, (n + 1) *
sizeof(
int));
4803 for(
int i = 1; i <= n; i++) {
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]);
4835 for(
int i = 1; i <= n; i++) {
4845 for(
const int i: vec) {
4851 vector vec_cpy = vec;
4853 vec_cpy.push_back(i);
4855 dfs(vec_cpy, s_cpy, cout);
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];
4875 for(
int i = 0; i < str.length(); i++) {
4876 oss << str[(n + i) % str.length()];
4885 for(
const char ch: 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)
4932 for(
int i = 1; i < s1.length(); i++) {
4933 const char ch = s1[i];
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);
4972 for(
int i = 1; i <= n; 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++) {
4984 for(
int i = 0; i < q; i++) {
4995 for(
auto [i, v]:
um) {
5003 vec->push_back(node->
val);
5004 for(
auto [i, next]: node->
nexts) {
5005 if(next !=
nullptr) {
5006 sum +=
dfs(vec, next);
5016 int ans = (1 + n) * (n / 2);
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;
5045 const auto *next = node->
next;
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)) {
5070 while(l1 !=
nullptr && l2 !=
nullptr) {
5078 current = current->next;
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) {
5101 while(head !=
nullptr) {
5103 const int val = head->
next->
val;
5105 while(cursor !=
nullptr && cursor->
val == val) {
5106 cursor = cursor->
next;
5108 head->
next = cursor;
5120 for(
const auto num: nums) {
5134 sort(input.begin(), input.end());
5135 return vector(input.begin(), input.begin() + k);
5146 while(nums[i] == i) {
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;
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]);
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);
5214 for(
const auto *current = head; current !=
nullptr; current = current->
next) {
5215 deq.push_front(current->val);
5217 return vector(deq.begin(), deq.end());
5224 unsigned int un = n;
5235 main = vector<int>();
5236 tmp = vector<int>();
5242 while(
main.size() != 1) {
5246 const auto ret =
main.back();
5248 while(!
tmp.empty()) {
5256 while(
main.size() != 1) {
5260 const auto ret =
main.back();
5261 while(!
tmp.empty()) {
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;
5299 for(
int i = 0; i < n; i++) {
5303 maximum = max(maximum, m * a /
static_cast<double>(b));
5305 cout << fixed << setprecision(6) << maximum;
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;
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];
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'];
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);
5433 if(!cows.contains(name2)) {
5434 cow2 =
new cow(name2, -1, -1);
5441 cow1->
next.push_back(cow2);
5443 cow2->
next.push_back(cow1);
5447 cout << abs(
dfs(cows[
"Bessie"]));
5452 if(c->
name ==
"Elsie") {
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);
5485 this->name = std::move(
name);
5489 this->
next = vector<cow *>();
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) {
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();
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();
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) {
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) <<
' ';
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);
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);
5696 for(; left <= right; left++) {
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;
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;
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]);
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
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) {
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]];
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') {
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);
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]);
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));
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
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;
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;
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) {
6254 int main(istream &cin, ostream &cout) {
6256 unordered_map<int, int> um;
6263 if(!um.contains(
id)) {
6265 }
else if(um[
id] != side) {
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);
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) {}
6310 swap(vec[lp], vec[rp]);
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] <<
' ';
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);
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++) {
6425 cout <<
bfr(vec, k) <<
' ' <<
bfl(vec, k) << endl;
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);
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;
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++) {
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;
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);
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]);
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;
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]) {
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;
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();
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]) {
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);
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());
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();
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);
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;
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++) {
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];
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));
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];
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];
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);
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;
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]);
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";
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) {
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)) {
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)
方向经过镜子反射后的变化
AcWing 32. 调整数组顺序使奇数位于偶数前面
void qs(vector< int > &vec, int l, int r)
void ms(vector< int > &arr, int l, int r, int *ans)
long bfl(const vector< long > &vec, long target)
long bfr(const vector< long > &vec, long target)
bool cmp(const pair< int, int > &a, const pair< int, int > &b)
vector< int > get_next(const string &str)
bool spfa(const vector< unordered_map< int, int > > &g, int, int n)
bool dfs(vector< unordered_set< int > > &g, int node, vector< int > &color, int c)
bool find(vector< unordered_set< int > > &g, int x, vector< bool > &st, vector< int > &match)
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 &)
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 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 int main(istream &, ostream &)
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 &)
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
unsigned int right_map[1000][1000]
在每格向右时可以被反射的次数
char mirrors[1000][1000]
镜子
unsigned int count_reflect(direction d, unsigned int x, unsigned int y)
获取反射的次数
int main(istream &cin, ostream &cout)
unsigned int down_map[1000][1000]
在每格向下时可以被反射的次数
unsigned int up_map[1000][1000]
在每格向上时可以被反射的次数
unsigned(* get_record(direction d))[1000]
获取记录类型
unsigned int left_map[1000][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)
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)
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)
bool operator<(const cow &) 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)
static unsigned int str2int(const string &str)
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 max(int x, int y)
static double add(double x, double y)
static int main(istream &cin, ostream &cout)
static int gcd(int a, int b)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int sum(int l, int r)
static int main(istream &cin, ostream &cout)
static void swap(int &x, int &y)
static int main(istream &cin, ostream &cout)
static int lcm(int a, int b)
static int main(istream &cin, ostream &cout)
static void print(int a[], int size, ostream &cout)
static void copy(const int a[], int b[], int size)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static void print2D(int a[][100], int row, int col, ostream &cout)
static int main(istream &cin, ostream &cout)
static void print(char str[], ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static string dfs(int i, bool free, unordered_map< int, int > um, string &b)
static int factorial(int n)
static int main(istream &cin, ostream &cout)
static void reverse(int a[], int size)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int get_unique_count(int a[], int n)
返回数组前n个数中的不同数的个数
static int main(istream &cin, ostream &cout)
static void sort(int a[], int l, int r)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
static void dfs(vector< int > &vec, set< int > &s, ostream &cout)
static int Fibonacci(int n)
static string leftRotateString(string str, int n)
static string replaceSpaces(string &str)
static int strToInt(string str)
static int main(istream &cin, ostream &cout)
static int main(istream &cin, ostream &cout)
map< int, TreeNode * > nexts
unordered_map< int, int > position
int dfs(vector< int > *vec, TreeNode *node)
int main(istream &cin, ostream &cout)
unordered_map< int, TreeNode * > um
unordered_map< int, int > size_tree
static ListNode * reverseList(ListNode *head)
static void deleteNode(ListNode *node)
static ListNode * findFirstCommonNode(ListNode *headA, ListNode *headB)
static ListNode * merge(ListNode *l1, ListNode *l2)
static ListNode * deleteDuplication(ListNode *head)
static int getNumberOfK(vector< int > &nums, int k)
static vector< int > getLeastNumbers_Solution(vector< int > input, int k)
static int getMissingNumber(vector< int > &nums)
static vector< int > findNumbersWithSum(vector< int > &nums, int target)
static void reOrderArray(vector< int > &array)
static vector< vector< int > > permutation(vector< int > &nums)
static void dfs(const vector< int > &vec, vector< int > nums, set< vector< int > > &s)
static vector< int > printListReversingly(ListNode *head)
static int NumberOf1(int n)
int pop()
Removes the element from in front of queue and returns that element
int peek()
Get the front element
bool empty() const
Returns whether the queue is empty
void push(int x)
Push element x to the back of queue
MyQueue()
Initialize your data structure here
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)
cow(string name, int val, int zodiac)
status(int len, pair< int, int > current, pair< int, int > target)
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
void insert(const string &str)