15#include <unordered_map>
16#include <unordered_set>
25 int main(istream &cin, ostream &cout) {
43 int main(istream &cin, ostream &cout) {
53 for(
int i = 0; i < str.length(); i++) {
87 if(i != str.length() - 1) {
96 int main(istream &cin, ostream &cout) {
99 for(
int _ = 0; _ < n; _++) {
107 for(
int i = 0; i < str.length(); i++) {
108 const char ch = str[i];
111 if(p != -1 || t != -1) {
117 if(p == -1 && t == -1) {
119 }
else if(p != -1 && t == -1) {
121 }
else if(p != -1 && t != -1) {
128 if(p == -1 || t != -1) {
136 if(p == -1 || t == -1) {
142 if(suf_a != mid_a * pref_a) {
145 cout <<
"YES" << endl;
148 cout <<
"NO" << endl;
155 int main(istream &cin, ostream &cout) {
158 vector<tuple<string, string, unsigned short>>
vec(n);
159 for(
int i = 0; i < n; i++) {
163 cin >> name >>
id >> grade;
164 vec[i] = make_tuple(name,
id, grade);
166 sort(
vec.begin(),
vec.end(), [](
const tuple<string, string, unsigned short> &a,
const tuple<string, string, unsigned short> &b) ->
bool {
167 const auto &[a_name, a_id, a_grade] = a;
168 const auto &[b_name, b_id, b_grade] = b;
169 return a_grade < b_grade;
171 auto [highest_name, highest_id, highest_grade] =
vec.back();
172 auto [lowest_name, lowest_id, lowest_grade] =
vec.front();
173 cout << highest_name <<
' ' << highest_id << endl
174 << lowest_name <<
' ' << lowest_id;
180 int main(istream &cin, ostream &cout) {
183 unordered_map<int, int> in(n);
184 for(
int i = 0; i < n; i++) {
189 for(
auto [num, deg]: in) {
196 cpy = (cpy * 3 + 1) / 2;
198 if(in.contains(cpy)) {
205 for(
auto [num, deg]: in) {
210 sort(ans.rbegin(), ans.rend());
211 for(
int i = 0; i < ans.size(); i++) {
213 if(i != ans.size() - 1) {
222 int main(istream &cin, ostream &cout) {
225 const int b = n / 100;
226 for(
int i = 0; i < b; i++) {
230 const int s = n / 10;
231 for(
int i = 0; i < s; i++) {
235 for(
int i = 1; i <= n; i++) {
243 int main(istream &cin, ostream &cout) {
247 memset(
is_prime, 1, (n + 1) *
sizeof(
bool));
248 for(
int i = 2; i <= n / 2; i++) {
249 for(
int j = 2; i * j <= n; j++) {
254 for(
int i = 2; i + 2 <= n; i++) {
266 int main(istream &cin, ostream &cout) {
271 for(
int i = 0; i < n; i++) {
272 cin >>
vec[(i + m) % n];
274 for(
int i = 0; i < n; i++) {
285 int main(istream &cin, ostream &cout) {
291 for(
int i = strs.size() - 1; i > 0; i--) {
292 cout << strs[i] <<
' ';
300 int main(istream &cin, ostream &cout) {
307 for(
int i = 0; i + 1 <
vec.size(); i += 2) {
308 const int a =
vec[i] *
vec[i + 1];
309 const int b =
vec[i + 1] - 1;
310 if(
vec[i + 1] != 0) {
311 oss << a <<
' ' << b <<
' ';
314 if(
vec.size() == 2 &&
vec[1] == 0) {
317 string ans = oss.str();
318 ans = ans.substr(0, ans.length() - 1);
325 int main(istream &cin, ostream &cout) {
331 for(
int i = 1; i <= n; i++) {
333 cout <<
"Case #" << i <<
": " << (a + b > c ?
"true" :
"false") << endl;
340 int main(istream &cin, ostream &cout) {
351 for(
int i = 0; i < n; i++) {
354 const int remainder = num % 5;
382 const double a4 =
static_cast<double>(a4_sum) / a4_count;
404 cout << fixed << setprecision(1) << a4;
417 int main(istream &cin, ostream &cout) {
422 vector<int> primes = {};
423 for(
int i = 2; count <= n; i++) {
425 for(
int factor = 2; factor <= sqrt(i); factor++) {
426 if(i % factor == 0) {
437 for(
int i = m - 1; i < n; i++) {
443 }
else if(i != n - 1) {
452 int main(istream &cin, ostream &cout) {
457 const vector<string> days = {
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"};
460 for(
int i = 0; i < str1.length() && i < str2.length(); i++) {
461 if(str1[i] == str2[i]) {
463 if(isupper(str1[i]) != 0) {
464 day = days[str1[i] -
'A'];
466 }
else if(isdigit(str1[i]) != 0 ||
'A' <= str1[i] && str1[i] <=
'N') {
467 if(isdigit(str1[i]) != 0) {
470 hh = 10 + str1[i] -
'A';
477 for(
int i = 0; i < str1.length() && i < str2.length(); i++) {
478 if(str1[i] == str2[i] && isalpha(str1[i]) != 0) {
483 cout << day <<
' ' << setw(2) <<
right << setfill(
'0') << hh <<
':' << setw(2) <<
right << setfill(
'0') << mm;
489 int main(istream &cin, ostream &cout) {
494 vector<student> sector[4] = {vector<student>(), vector<student>(), vector<student>(), vector<student>()};
496 for(
int i = 0; i < n; i++) {
498 cin >> stu.id >> stu.morality >> stu.ability;
499 if(stu.morality >= l && stu.ability >= l) {
501 if(stu.morality >= h && stu.ability >= h) {
502 sector[0].push_back(stu);
503 }
else if(stu.morality >= h) {
504 sector[1].push_back(stu);
505 }
else if(stu.morality < h && stu.ability < h && stu.morality >= stu.ability) {
506 sector[2].push_back(stu);
508 sector[3].push_back(stu);
513 for(
int i = 0; i < 4; i++) {
514 sort(sector[i].begin(), sector[i].end());
515 for(
auto it = sector[i].begin(); it != sector[i].end(); ++it) {
517 cout << stu.id <<
' ' << stu.morality <<
' ' << stu.ability << endl;
526 return this->
id < stu.
id;
535 int main(istream &cin, ostream &cout) {
540 cin >> a >> da >> b >> db;
545 for(
const char ch: a) {
551 for(
const char ch: b) {
571 int main(istream &cin, ostream &cout) {
576 int a_win_count[3] = {};
577 int b_win_count[3] = {};
579 for(
int i = 0; i < n; i++) {
585 }
else if(a ==
'C' && b ==
'J' || a ==
'J' && b ==
'B' || a ==
'B' && b ==
'C') {
613 cout << a_win <<
' ' << tie <<
' ' << b_win << endl
614 << b_win <<
' ' << tie <<
' ' << a_win << endl;
617 for(
int i = 0; i < 3; i++) {
618 a_win_max = max(a_win_max, a_win_count[i]);
619 b_win_max = max(b_win_max, b_win_count[i]);
621 for(
int i = 0; i < 3; i++) {
622 if(a_win_count[i] == a_win_max) {
638 for(
int i = 0; i < 3; i++) {
639 if(b_win_count[i] == b_win_max) {
659 int main(istream &cin, ostream &cout) {
664 while(num.length() < 4) {
668 cout <<
"0000 - 0000 = 0000";
671 while(num !=
"0000" && a - b != 6174) {
675 sort(num.rbegin(), num.rend());
678 sort(num.begin(), num.end());
681 ss << setw(4) <<
right << setfill(
'0') << a - b;
684 cout << setw(4) <<
right << setfill(
'0') << a <<
" - " << setw(4) <<
right << setfill(
'0') << b <<
" = " << setw(4) <<
right << setfill(
'0') << a - b << endl;
691 int main(istream &cin, ostream &cout) {
695 vector<long double> storage(n);
696 vector<long double> sales(n);
697 vector<pair<long double, int>> unit_price(n);
698 for(
int i = 0; i < n; i++) {
701 for(
int i = 0; i < n; i++) {
704 for(
int i = 0; i < n; i++) {
705 unit_price[i] = make_pair(sales[i] / storage[i], i);
707 sort(unit_price.begin(), unit_price.end(), [](
const pair<long double, int> &a,
const pair<long double, int> &b) { return a.first > b.first; });
708 int current_amount = 0;
710 for(
int i = 0; i < n && current_amount < d; i++) {
712 if(current_amount + storage[unit_price[i].second] > d) {
713 amount = d - current_amount;
715 ans += amount * sales[unit_price[i].second] / storage[unit_price[i].second];
717 amount = storage[unit_price[i].second];
718 ans += sales[unit_price[i].second];
719 current_amount += storage[unit_price[i].second];
722 cout << fixed << setprecision(2) << ans;
728 int main(istream &cin, ostream &cout) {
732 if(isdigit(ch) != 0) {
736 for(
auto [d, m]: dm) {
737 cout << d <<
':' << m << endl;
744 int main(istream &cin, ostream &cout) {
754 vector<unsigned short>
vec;
756 vec.push_back(sum % d);
759 for(
auto it =
vec.rbegin(); it !=
vec.rend(); ++it) {
767 int main(istream &cin, ostream &cout) {
769 for(
int i = 0; i < 10; i++) {
772 for(
int i = 1; i < 10; i++) {
779 for(
int i = 0; i < 10; i++) {
790 int main(istream &cin, ostream &cout) {
793 const char op = str[0];
794 const char num1 = str[1];
795 const auto pos_e = str.find(
'E');
796 const string num2 = str.substr(3, pos_e - 3);
797 const string num3_str = str.substr(pos_e + 1);
807 for(
int i = 1; i < abs(num3); i++) {
810 cout << num1 << num2;
814 for(; i < num3 && i < num2.length(); i++) {
817 if(i < num2.length()) {
819 for(; i < num2.length(); i++) {
824 for(; i < num3; i++) {
834 int main(istream &cin, ostream &cout) {
838 cin >> address0 >> n >> k;
839 unordered_map<string, pair<int, string>> nodes;
840 for(
int i = 0; i < n; i++) {
844 cin >> address >> data >> next;
845 nodes.insert(make_pair(address, make_pair(data, next)));
847 vector<pair<string, int>>
vec;
848 string current_addr = address0;
849 while(current_addr !=
"-1") {
850 auto [data, next] = nodes[current_addr];
851 vec.emplace_back(current_addr, data);
855 for(
int i = 0; i < n - n % k; i += k) {
858 for(
int i = 0; i < n; i++) {
859 cout <<
vec[i].first <<
' ' <<
vec[i].second <<
' ' << (i + 1 < n ?
vec[i + 1].first :
"-1") << endl;
866 int main(istream &cin, ostream &cout) {
870 unsigned int d = (c2 + 50 - c1) / 100;
871 const unsigned int h = d / 3600;
873 const unsigned int m = d / 60;
875 const unsigned s = d;
876 cout << setw(2) <<
right << setfill(
'0') << h <<
':' << setw(2) <<
right << setfill(
'0') << m <<
':' << setw(2) <<
right << setfill(
'0') << s;
882 int main(istream &cin, ostream &cout) {
887 while((i + 1) * (i + 1) / 2 - 1 <= n) {
891 for(
int j = 0; j < (i + 1) / 2; ++j) {
892 for(
int k = 0; k < j; k++) {
895 for(
int k = 0; k < i - 2 * j; k++) {
900 for(
int j = (i + 1) / 2 - 2; j >= 0; --j) {
901 for(
int k = 0; k < j; k++) {
904 for(
int k = 0; k < i - 2 * j; k++) {
909 cout << n - ((i + 1) * (i + 1) / 2 - 1);
919 if(year == 2014 && month > 9) {
922 if(year == 2014 && month == 9 && day > 6) {
928 if(year == 1814 && month < 9) {
931 if(year == 1814 && month == 9 && day < 6) {
937 int main(istream &cin, ostream &cout) {
941 auto oldest =
Person(2014, 9, 6);
942 auto youngest =
Person(1814, 9, 6);
943 for(
int i = 0; i < n; i++) {
961 cout << count <<
' ' << oldest.
name <<
' ' << youngest.name;
983 int main(istream &cin, ostream &cout) {
984 unordered_set<char> bad;
985 unordered_set<char> s;
990 for(
char ch: bad_str) {
994 for(
char ch: good_str) {
996 if(!bad.contains(ch) && !s.contains(ch)) {
1006 int main(istream &cin, ostream &cout) {
1010 vector<unsigned int>
vec(n);
1011 for(
unsigned int i = 0; i < n; i++) {
1014 sort(
vec.begin(),
vec.end());
1015 unsigned int ans = 0;
1016 for(
unsigned i = 0; i <
vec.size(); i++) {
1017 unsigned diff = upper_bound(
vec.begin(),
vec.end(),
vec[i] * p) - (
vec.begin() + i);
1018 ans = max(ans, diff);
1026 int main(istream &cin, ostream &cout) {
1029 const char captcha[11] = {
'1',
'0',
'X',
'9',
'8',
'7',
'6',
'5',
'4',
'3',
'2'};
1030 const int weight[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
1032 for(
int i = 0; i < n; i++) {
1036 for(
int j = 0; j < 17; j++) {
1037 sum += weight[j] * (str[j] -
'0');
1040 if(str[17] != captcha[sum]) {
1041 cout << str << endl;
1046 cout <<
"All passed";
1053 int main(istream &cin, ostream &cout) {
1056 unordered_map<int, unsigned long long> um;
1057 unsigned long long maximum_score = 0;
1059 for(
int i = 0; i < n; i++) {
1064 if(um[
id] >= maximum_score) {
1065 maximum_score = um[id];
1069 cout << maximum_id <<
' ' << maximum_score;
1075 int main(istream &cin, ostream &cout) {
1076 unordered_set<char> broken;
1079 cin >> str1 >> str2;
1085 for(
char ch: str1) {
1091 for(
const char ch: str2) {
1092 if(!(broken.contains(toupper(ch)) || !shift && isupper(ch) != 0)) {
1101 int main(istream &cin, ostream &cout) {
1102 long long numerator1;
1103 long long numerator2;
1104 long long denominator1;
1105 long long denominator2;
1107 cin >> numerator1 >> ch >> denominator1 >> numerator2 >> ch >> denominator2;
1108 const Fraction frac1(
true, numerator1, denominator1);
1109 const Fraction frac2(
true, numerator2, denominator2);
1110 cout << frac1 <<
" + " << frac2 <<
" = " << frac1 + frac2 << endl
1111 << frac1 <<
" - " << frac2 <<
" = " << frac1 - frac2 << endl
1112 << frac1 <<
" * " << frac2 <<
" = " << frac1 * frac2 << endl
1113 << frac1 <<
" / " << frac2 <<
" = " << frac1 / frac2;
1119 int main(istream &cin, ostream &cout) {
1122 vector<int> vec1(n);
1123 vector<int> vec2(n);
1124 for(
int i = 0; i < n; i++) {
1127 for(
int i = 0; i < n; i++) {
1131 for(; i >= 0 && vec1[i] == vec2[i]; --i) {}
1132 vector<int> sorted_vec = vec1;
1133 sort(sorted_vec.begin(), sorted_vec.begin() + i + 1);
1134 bool insertion =
true;
1135 for(
int j = 0; j <= i; j++) {
1136 if(sorted_vec[j] != vec2[j]) {
1143 cout <<
"Insertion Sort" << endl;
1145 for(; j >= 0; --j) {
1146 vector vec1_cpy = vec1;
1147 sort(vec1_cpy.begin(), vec1_cpy.begin() + j);
1148 if(vec1_cpy == vec2) {
1152 sort(vec1.begin(), vec1.begin() + j + 1);
1153 for(
int k = 0; k < n; k++) {
1162 cout <<
"Merge Sort" << endl;
1168 for(; (j + 1) * factor <= n; j++) {
1169 sort(vec1.begin() + j * factor, vec1.begin() + (j + 1) * factor);
1171 if(j * factor < n) {
1172 sort(vec1.begin() + j * factor, vec1.end());
1175 for(
int k = 0; k < n; k++) {
1191 int main(istream &cin, ostream &cout) {
1195 for(
int i = 0; i < n; i++) {
1199 for(
int i = 0; i < (n + 1) / 2 - 2; i++) {
1201 for(
int j = 0; j < n - 2; j++) {
1206 for(
int i = 0; i < n; i++) {
1214 int main(istream &cin, ostream &cout) {
1215 unsigned long long galleon;
1216 unsigned long long sickle;
1217 unsigned long long knut;
1219 unsigned long long sum[2];
1220 for(
int i = 0; i < 2; i++) {
1221 cin >> galleon >> ch >> sickle >> ch >> knut;
1222 sum[i] = galleon * 17 * 29 + sickle * 29 + knut;
1224 const bool positive = sum[0] <= sum[1];
1225 unsigned long long diff;
1227 diff = sum[1] - sum[0];
1229 diff = sum[0] - sum[1];
1231 galleon = diff / (17 * 29);
1239 cout << galleon <<
'.' << sickle <<
'.' << knut;
1245 int main(istream &cin, ostream &cout) {
1246 unordered_map<int, int> um;
1250 for(
int i = 0; i < n; i++) {
1255 for(
int i = 0; i < n; i++) {
1267 int main(istream &cin, ostream &cout) {
1270 cin >> str1 >> str2;
1271 unordered_map<char, int> um;
1272 for(
char ch: str1) {
1276 for(
char ch: str2) {
1283 for(
auto [ch, count]: um) {
1284 if(yes && count > 0) {
1286 }
else if(!yes && count < 0) {
1290 cout << (yes ?
"Yes " :
"No ") << sum;
1296 int main(istream &cin, ostream &cout) {
1299 vector<unsigned long long> p(str.length(), 0);
1300 vector<unsigned long long> t(str.length(), 0);
1301 unsigned long long current_p = 0;
1302 for(
int i = 0; i < p.size(); ++i) {
1308 unsigned long long current_t = 0;
1309 for(
int i = t.size() - 1; i >= 0; --i) {
1315 unsigned long long ans = 0;
1316 for(
int i = 0; i < p.size(); i++) {
1318 ans += p[i] * t[i] % 1000000007;
1328 int main(istream &cin, ostream &cout) {
1331 unordered_map<int, student> um;
1332 for(
int i = 0; i < n; i++) {
1335 um[stu.
seat1] = stu;
1339 for(
int i = 0; i < n; i++) {
1342 cout << stu.
id <<
' ' << stu.
seat2 << endl;
1349 int main(istream &cin, ostream &cout) {
1350 auto *str =
new char[1001];
1351 cin.getline(str, 1001);
1354 for(
int i = 0; i < strlen(str); ++i) {
1355 char ch = tolower(str[i]);
1356 if(isalpha(ch) != 0) {
1358 maximum = max(maximum, m[ch]);
1361 for(
auto [ch, cnt]: m) {
1362 if(cnt == maximum) {
1363 cout << ch <<
' ' << cnt;
1373 int main(istream &cin, ostream &cout) {
1374 unordered_map<char, unsigned> um;
1375 const char patest[6] = {
'P',
'A',
'T',
'e',
's',
't'};
1385 if(um.contains(ch)) {
1389 unsigned minimum = 10000;
1390 for(
const auto &[ch, count]: um) {
1391 minimum = min(minimum, count);
1393 for(
auto &[ch, count]: um) {
1396 for(
unsigned i = 0; i < minimum; i++) {
1402 for(
unsigned i = 0; i < 6; i++) {
1403 if(um[patest[i]] > 0) {
1415 int main(istream &cin, ostream &cout) {
1416 string abc[13] = {
"tret",
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jly",
"aug",
"sep",
"oct",
"nov",
"dec"};
1417 string abc2[13] = {
"tret",
"tam",
"hel",
"maa",
"huh",
"tou",
"kes",
"hei",
"elo",
"syy",
"lok",
"mer",
"jou"};
1418 unordered_map<string, int> um;
1419 unordered_set<string> us2;
1420 for(
int i = 0; i < 13; i++) {
1421 us2.insert(abc2[i]);
1428 cin.getline(cccc, 16);
1430 auto *cstr =
new char[1024];
1431 cin.getline(cstr, 1024);
1434 if(isdigit(ss.peek()) != 0) {
1436 unsigned long long num;
1438 vector<string> output;
1446 output.push_back(abc[num % 13]);
1450 output.push_back(abc2[num % 13]);
1454 for(
auto it = output.rbegin(); it != output.rend(); ++it) {
1456 if(it + 1 != output.rend()) {
1464 for(
int i = 0; cstr[i] !=
'\0'; i++) {
1465 if(cstr[i] ==
' ') {
1471 unsigned long long num = 0;
1474 num += um[str] * pow(13, --b);
1476 if(us2.contains(str)) {
1491 int main(istream &cin, ostream &cout) {
1494 vector<unsigned>
vec(n);
1495 vector<unsigned> l_max(n);
1496 vector<unsigned> r_min(n);
1497 unsigned current = 0;
1498 for(
unsigned i = 0; i < n; ++i) {
1501 current = max(current,
vec[i]);
1503 current = 1000000001;
1504 for(
int i = n - 1; i >= 0; --i) {
1506 current = min(current,
vec[i]);
1508 vector<unsigned> ans;
1509 for(
unsigned i = 0; i < n; ++i) {
1510 if(
vec[i] > l_max[i] &&
vec[i] < r_min[i]) {
1511 ans.push_back(
vec[i]);
1514 cout << ans.size() << endl;
1515 for(
int i = 0; i < ans.size(); i++) {
1517 if(i != ans.size() - 1) {
1527 int main(istream &cin, ostream &cout) {
1537 cin >> a1 >> a2 >> b1 >> b2;
1538 const int sum = a1 + b1;
1539 if(sum == a2 && sum != b2) {
1541 }
else if(sum == b2 && sum != a2) {
1545 cout << ans1 <<
' ' << ans2;
1551 int main(istream &cin, ostream &cout) {
1554 unordered_map<int, int> um;
1564 for(
const auto &[team, score]: um) {
1565 maximum = max(score, maximum);
1567 for(
const auto &[team, score]: um) {
1568 if(score == maximum) {
1569 cout << team <<
' ' << score;
1578 int main(istream &cin, ostream &cout) {
1584 for(; i <= max(b.length(), a.length()); ++i) {
1585 const int bi = b.length() >= i ? b[b.length() - i] -
'0' : 0;
1586 const int ai = a.length() >= i ? a[a.length() - i] -
'0' : 0;
1588 char ret = (ai + bi) % 13;
1609 ans.push_back(ret +
'0');
1612 for(
auto it = ans.rbegin(); it != ans.rend(); ++it) {
1620 int main(istream &cin, ostream &cout) {
1624 long double ans = 0;
1625 for(
int i = 0; i < n; ++i) {
1627 ans += num * (n - i) * (i + 1);
1629 cout << fixed << setprecision(2) << ans;
1635 int main(istream &cin, ostream &cout) {
1640 for(
int i = 1; i * i <=
N; ++i) {
1646 vector matrix(m, vector(n, 0));
1648 for(
int i = 0; i <
N; i++) {
1651 sort(
vec.rbegin(),
vec.rend());
1656 matrix[0][0] =
vec[current];
1675 if(next_x < 0 || next_x >= m || next_y < 0 || next_y >= n || matrix[next_x][next_y] != 0) {
1679 matrix[next_x][next_y] =
vec[++current];
1685 for(
int i = 0; i < m; i++) {
1686 for(
int j = 0; j < n; j++) {
1687 cout << matrix[i][j];
1701 int main(istream &cin, ostream &cout) {
1706 cin >> r1 >> p1 >> r2 >> p2;
1707 const long double a1 = r1 * cos(p1);
1708 const long double a2 = r2 * cos(p2);
1709 const long double b1 = r1 * sin(p1);
1710 const long double b2 = r2 * sin(p2);
1711 long double a = a1 * a2 - b1 * b2;
1712 long double b = a1 * b2 + a2 * b1;
1713 if(a < 0 && a + 0.005 >= 0) {
1716 if(b < 0 && b + 0.005 >= 0) {
1719 cout << fixed << setprecision(2) << a << fixed << setprecision(2) << showpos << b <<
'i';
1725 int main(istream &cin, ostream &cout) {
1726 vector<string>
vec[3];
1728 for(
int a = 0; a < 3; a++) {
1729 cin.getline(line,
sizeof line);
1732 while(i < strlen(line) && j < strlen(line)) {
1733 while(line[i] !=
'[' && i < strlen(line)) {
1736 while(line[j] !=
']' && j < strlen(line)) {
1739 if(i < strlen(line) && j < strlen(line)) {
1741 for(
int m = i + 1; m < j; ++m) {
1744 vec[a].push_back(oss.str());
1759 cin >> a >> b >> c >> d >> e;
1765 if(a <
vec[0].size()) {
1771 if(b <
vec[1].size()) {
1776 if(c <
vec[2].size()) {
1781 if(d <
vec[1].size()) {
1787 if(e <
vec[0].size()) {
1792 cout << oss.str() << endl;
1795 cout <<
"Are you kidding me? @\\/@" << endl;
1802 int main(istream &cin, ostream &cout) {
1809 for(
int i = 0; i < n; ++i) {
1813 for(
int j = 0; j < k; ++j) {
1828 const double ans1 =
static_cast<double>(cnt1) / n * 100;
1829 const double ans2 =
static_cast<double>(cnt2) / n * 100;
1830 cout << fixed << setprecision(1) << ans1 <<
"% " << fixed << setprecision(1) << ans2 <<
'%';
1836 int main(istream &cin, ostream &cout) {
1840 long double sum = 0;
1847 if(x.length() > 1) {
1853 if(x.length() > 8) {
1856 if(isdigit(x[start]) != 0) {
1858 for(
int i = start + 1; i < x.length(); ++i) {
1866 }
else if(isdigit(x[i]) == 0) {
1871 if(pos + 3 < x.length()) {
1880 if(num >= -1000 && num <= 1000) {
1889 if(num >= -1000 && num <= 1000) {
1898 cout <<
"ERROR: " << x <<
" is not a legal number" << endl;
1902 cout <<
"The average of 0 numbers is Undefined" << endl;
1904 const long double y = sum / k;
1905 cout <<
"The average of " << k <<
" number" << (k == 1 ?
"" :
"s") <<
" is " << fixed << setprecision(2) << y << endl;
1912 int main(istream &cin, ostream &cout) {
1916 vector<Person>
vec(n);
1917 for(
int i = 0; i < n; i++) {
1920 cin >> name >> height;
1921 const auto p =
Person{name, height};
1924 sort(
vec.begin(),
vec.end());
1925 vector<deque<Person>> deq(k);
1926 for(
int i = 0; i < n / k + n % k; i++) {
1928 deq[k - 1].push_front(
vec.back());
1930 deq[k - 1].push_back(
vec.back());
1934 for(
int i = k - 2; i >= 0; i--) {
1935 for(
int j = 0; j < n / k; j++) {
1937 deq[i].push_front(
vec.back());
1939 deq[i].push_back(
vec.back());
1944 for(
int i = k - 1; i >= 0; i--) {
1945 for(
int j = 0; j < deq[i].size(); j++) {
1946 cout << deq[i][j].name;
1947 if(j != deq[i].size() - 1) {
1970 int main(istream &cin, ostream &cout) {
1975 for(
int i = 0; i < n; i++) {
1977 ans += num * (n - 1) * 11;
1985 int main(istream &cin, ostream &cout) {
1987 cin.getline(str, 100010);
1989 for(
int i = 0; str[i] !=
'\0'; i++) {
1990 if(isupper(str[i]) != 0) {
1991 n += str[i] -
'A' + 1;
1992 }
else if(islower(str[i]) != 0) {
1993 n += str[i] -
'a' + 1;
2006 cout << zero <<
' ' << one;
2012 int main(istream &cin, ostream &cout) {
2017 vector<Problem> problems(m);
2018 for(
int i = 0; i < m; i++) {
2032 for(
int i = 0; i < n; i++) {
2034 for(
int j = 0; j < m; j++) {
2039 unordered_set<char> answer;
2040 for(
int k = 0; k < num; k++) {
2043 answer.insert(choice);
2045 if(answer == problems[j].correct_choices) {
2046 score += problems[j].
score;
2048 problems[j].error_count++;
2049 max_error = max(max_error, problems[j].error_count);
2053 cout << score << endl;
2055 if(max_error == 0) {
2056 cout <<
"Too simple";
2058 vector<int> max_problems;
2059 cout << max_error <<
' ';
2060 for(
int i = 0; i < m; i++) {
2061 if(problems[i].error_count == max_error) {
2062 max_problems.push_back(i + 1);
2065 for(
int i = 0; i < max_problems.size(); i++) {
2066 cout << max_problems[i];
2067 if(i != max_problems.size() - 1) {
2078 for(
int i = 2; i <= sqrt(n); i++) {
2086 int main(istream &cin, ostream &cout) {
2089 unordered_map<string, string> um;
2090 for(
int rank = 1; rank <= n; rank++) {
2094 um[id] =
"Mystery Award";
2098 um[id] =
"Chocolate";
2106 if(
static_cast<unsigned int>(um.contains(
id)) == 0U) {
2107 cout <<
id <<
": Are you kidding?" << endl;
2109 cout <<
id <<
": " << um[id] << endl;
2118 int main(istream &cin, ostream &cout) {
2121 vector<int>
vec(n + 1);
2122 for(
int i = 1; i <= n; i++) {
2125 sort(
vec.begin(),
vec.end());
2128 while(e <= n &&
vec[i] > e) {
2138 int main(istream &cin, ostream &cout) {
2142 vector<int> scores(m);
2143 for(
int i = 0; i < m; i++) {
2146 vector<int> correct_answer(m);
2147 for(
int i = 0; i < m; i++) {
2148 cin >> correct_answer[i];
2150 for(
int i = 0; i < n; i++) {
2152 for(
int j = 0; j < m; j++) {
2155 if(answer == correct_answer[j]) {
2159 cout << score << endl;
2166 int main(istream &cin, ostream &cout) {
2173 cin >> n1 >> ch >> m1 >> n2 >> ch >> m2 >> k;
2182 for(
int i = ceil(n1) == n1 ? n1 + 1 : ceil(n1); i < n2; i++) {
2183 const int f = gcd(i, k);
2186 cout << i / f <<
'/' << k;
2189 cout <<
' ' << i / f <<
'/' << k;
2198 int main(istream &cin, ostream &cout) {
2206 ans = max(ans, sqrt(a * a + b * b));
2208 cout << fixed << setprecision(2) << ans;
2214 int main(istream &cin, ostream &cout) {
2222 for(
const char ch: str) {
2227 cout << s.size() << endl;
2228 for(
auto i = s.begin(); i != s.end(); ++i) {
2230 if(*i != *s.rbegin()) {
2239 int main(istream &cin, ostream &cout) {
2245 cin >> m >> n >> a >> b >> g;
2246 for(
int i = 0; i < m; i++) {
2247 for(
int j = 0; j < n; j++) {
2250 if(a <= v && v <= b) {
2251 cout << setw(3) <<
right << setfill(
'0') << g;
2253 cout << setw(3) <<
right << setfill(
'0') << v;
2268 int main(istream &cin, ostream &cout) {
2271 unordered_map<string, string> um;
2273 for(
int i = 0; i < n; i++) {
2282 for(
int i = 0; i < m; i++) {
2285 if(um.contains(
id)) {
2291 cout << s.size() << endl;
2292 for(
auto it = s.begin(); it != s.end(); ++it) {
2294 if(*it != *s.rbegin()) {
2303 int main(istream &cin, ostream &cout) {
2309 cin.getline(s, 1024);
2311 cin.getline(s, 1024);
2312 auto str = string(s);
2317 cout <<
"Account locked";
2321 cout <<
"Wrong password: " << str << endl;
2324 cout <<
"Account locked";
2328 cout <<
"Welcome in";
2336 int main(istream &cin, ostream &cout) {
2340 cin >> m >> n >> tol;
2341 vector grid(n, vector<long>(m));
2342 unordered_map<long, unsigned long> um_cnt;
2343 unordered_map<long, long> um_x;
2344 unordered_map<long, long> um_y;
2345 for(
int i = 0; i < n; i++) {
2346 for(
int j = 0; j < m; j++) {
2348 um_cnt[grid[i][j]]++;
2349 um_x[grid[i][j]] = i;
2350 um_y[grid[i][j]] = j;
2356 bool has_ans =
false;
2357 for(
auto [v, cnt]: um_cnt) {
2361 pair<long, long> surroundings[8] = {make_pair(x - 1, y - 1), make_pair(x - 1, y), make_pair(x - 1, y + 1),
2362 make_pair(x, y - 1), make_pair(x, y + 1),
2363 make_pair(x + 1, y - 1), make_pair(x + 1, y), make_pair(x + 1, y + 1)};
2365 for(
auto [s_x, s_y]: surroundings) {
2366 if(s_x >= 0 && s_x < n && s_y >= 0 && s_y < m) {
2367 const long dist = abs(v - grid[s_x][s_y]);
2381 cout <<
"Not Unique";
2388 cout <<
'(' << ans_y <<
", " << ans_x <<
"): " << ans_v;
2390 cout <<
"Not Exist";
2397 int main(istream &cin, ostream &cout) {
2403 unordered_set<string> names;
2404 vector<string> list(m);
2406 for(
int i = 0; i < m; i++) {
2409 for(
int i = s - 1; i < m;) {
2410 if(names.contains(list[i])) {
2414 names.insert(list[i]);
2415 cout << list[i] << endl;
2420 cout <<
"Keep going...";
2427 int main(istream &cin, ostream &cout) {
2431 for(
int i = 0; i < n; i++) {
2434 sort(
vec.begin(),
vec.end());
2435 int current =
vec[0];
2436 for(
int i = 1; i < n; i++) {
2437 current = (current +
vec[i]) / 2;
2445 int main(istream &cin, ostream &cout) {
2454 cin >> n1 >> b >> tt >> n2;
2456 cout <<
"Not enough tokens. Total = " << t <<
'.' << endl;
2459 if(
static_cast<int>(n2 > n1) == b) {
2461 cout <<
"Win " << tt <<
"! Total = " << t <<
'.' << endl;
2464 cout <<
"Lose " << tt <<
". Total = " << t <<
'.' << endl;
2467 cout <<
"Game Over.";
2476 int main(istream &cin, ostream &cout) {
2480 unordered_set<string> items;
2488 for(
int i = 0; i < n; i++) {
2493 for(
int j = 0; j < k; j++) {
2496 if(items.contains(item)) {
2497 vec.push_back(item);
2500 item_cnt +=
vec.size();
2503 cout << name <<
':';
2504 for(
const auto &item:
vec) {
2505 cout <<
' ' << item;
2510 cout << stu_cnt <<
' ' << item_cnt;
2516 int main(istream &cin, ostream &cout) {
2520 vector<problem> problems(m);
2521 map<pair<int, char>,
int> noe;
2523 for(
int i = 0; i < m; i++) {
2527 p.
ca = unordered_set<char>();
2528 for(
int j = 0; j < p.
noca; j++) {
2536 for(
int i = 0; i < n; i++) {
2538 for(
int j = 0; j < m; j++) {
2539 unordered_set<char> as;
2544 for(
int k = 0; k < noa; k++) {
2548 if(!problems[j].ca.contains(a)) {
2549 noe[make_pair(problems[j].
id, a)]++;
2550 max_cnt = max(max_cnt, noe[make_pair(problems[j].
id, a)]);
2555 for(
auto a: problems[j].ca) {
2556 if(!as.contains(a)) {
2557 noe[make_pair(problems[j].
id, a)]++;
2558 max_cnt = max(max_cnt, noe[make_pair(problems[j].
id, a)]);
2564 if(noa == problems[j].noca) {
2565 score += problems[j].score;
2567 score +=
static_cast<double>(problems[j].score) / 2;
2570 cout << fixed << setprecision(1) << score << endl;
2573 cout <<
"Too simple";
2575 for(
const auto &[k, cnt]: noe) {
2576 if(cnt == max_cnt) {
2577 const auto &[id, a] = k;
2578 cout << cnt <<
' ' <<
id <<
'-' << a << endl;
2587 int main(istream &cin, ostream &cout) {
2591 cin >> str_n >> str_a >> str_b;
2596 for(
int i = str_n.length() - 1; i >= 0; i--) {
2597 if(str_n[i] ==
'0') {
2600 n.push_back(str_n[i] -
'0');
2603 for(
int i = str_a.length() - 1; i >= 0; i--) {
2604 a.push_back(str_a[i] -
'0');
2606 for(
int i = str_b.length() - 1; i >= 0; i--) {
2607 b.push_back(str_b[i] -
'0');
2610 for(
int i = 0; i < max(a.size(), b.size()) || carry != 0; i++) {
2611 const int radix = i < n.size() ? n[i] : 10;
2612 const int num_a = i < a.size() ? a[i] : 0;
2613 const int num_b = i < b.size() ? b[i] : 0;
2614 const int sum = num_a + num_b + carry;
2615 ans.push_back(sum % radix);
2616 carry = sum / radix;
2618 int i = ans.size() - 1;
2619 while(ans[i] == 0 && i > 0) {
2622 for(; i >= 0; i--) {
2630 int main(istream &cin, ostream &cout) {
2634 cin >> current >> n >> k;
2635 unordered_map<string, Node> um;
2636 for(
int i = 0; i < n; i++) {
2641 um[node.
addr] = node;
2646 while(current !=
"-1") {
2647 Node node = um[current];
2649 vec1.push_back(node);
2650 }
else if(node.
data <= k) {
2651 vec2.push_back(node);
2653 vec3.push_back(node);
2655 current = node.
next;
2658 vec.insert(
vec.end(), vec1.begin(), vec1.end());
2659 vec.insert(
vec.end(), vec2.begin(), vec2.end());
2660 vec.insert(
vec.end(), vec3.begin(), vec3.end());
2661 for(
int i = 0; i <
vec.size(); i++) {
2663 cout << node.
addr <<
' ' << node.
data <<
' ' << (i + 1 <
vec.size() ?
vec[i + 1].addr :
"-1") << endl;
2670 int main(istream &cin, ostream &cout) {
2674 for(
int i = 0; i < n; i++) {
2675 for(
int j = 0; j < 4; j++) {
2691 int main(istream &cin, ostream &cout) {
2695 cin.getline(str, 1024);
2696 cin.getline(str, 1024);
2698 for(
int i = 0; i < strlen(str); i++) {
2700 while(i + 1 < strlen(str) && str[i] == str[i + 1]) {
2711 for(
int i = 0; i < strlen(str); i++) {
2712 if(isdigit(str[i]) != 0) {
2714 for(; i < strlen(str); i++) {
2715 if(isdigit(str[i]) != 0) {
2723 for(
int j = 0; j < n; j++) {
2736 int main(istream &cin, ostream &cout) {
2740 for(
int i = 0; i < n; i++) {
2744 for(
int j = 1; j < n; j++) {
2747 if(0 <= score && score <= m) {
2748 scores.push_back(score);
2751 sort(scores.begin(), scores.end());
2752 scores.erase(scores.begin());
2753 scores.erase(--scores.end());
2755 for(
int j = 0; j < scores.size(); j++) {
2758 const double avg =
static_cast<double>(sum) / scores.size();
2759 const int final =
static_cast<int>((avg + s_teacher) / 2 + 0.5);
2760 cout <<
final << endl;
2768 for(
int i = 0; i < str.length() / 2; i++) {
2769 if(str[i] != str[str.length() - 1 - i]) {
2776 int main(istream &cin, ostream &cout) {
2780 for(
int i = 0; i < 10; i++) {
2785 cout << bi <<
" is a palindromic number.";
2788 auto str_b = string(str.rbegin(), str.rend());
2791 cout << str <<
" + " << str_b <<
" = " << c << endl;
2794 cout <<
"Not found in 10 iterations.";
2800 int main(istream &cin, ostream &cout) {
2805 unordered_map<string, student> um;
2806 for(
int i = 0; i < p; i++) {
2808 cin >>
id >> um[id].p;
2810 for(
int i = 0; i < m; i++) {
2812 cin >>
id >> um[id].mid_term;
2814 for(
int i = 0; i < n; i++) {
2816 cin >>
id >> um[id].final;
2818 vector<student>
vec;
2819 for(
auto &[
id, stu]: um) {
2821 stu.score = stu.get_score();
2822 if(stu.p >= 200 && stu.score >= 60) {
2826 sort(
vec.begin(),
vec.end());
2827 for(
const auto &stu:
vec) {
2828 cout << stu.id <<
' ' << stu.p <<
' ' << stu.mid_term <<
' ' << stu.final <<
' ' << stu.score << endl;
2835 const int f =
final == -1 ? 0 :
final;
2837 return static_cast<int>(mt * 0.4 + f * 0.6 + 0.5);
2846 return this->
id < stu.
id;
2851 int main(istream &cin, ostream &cout) {
2855 cin.getline(str, 1024);
2857 cin.getline(str, 1024);
2858 auto password = string(str);
2862 if(password.length() < 6) {
2863 cout <<
"Your password is tai duan le." << endl;
2865 for(
const char ch: password) {
2866 if(isdigit(ch) != 0) {
2868 }
else if(isalpha(ch) != 0) {
2870 }
else if(ch !=
'.') {
2872 cout <<
"Your password is tai luan le." << endl;
2879 if(alpha && !digit) {
2880 cout <<
"Your password needs shu zi." << endl;
2881 }
else if(!alpha && digit) {
2882 cout <<
"Your password needs zi mu." << endl;
2883 }
else if(alpha && digit) {
2884 cout <<
"Your password is wan mei." << endl;
2895 int main(istream &cin, ostream &cout) {
2898 vector<player>
vec(n);
2899 for(
int i = 0; i < n; i++) {
2900 cin >>
vec[i].id >>
vec[i].x >>
vec[i].y;
2902 sort(
vec.begin(),
vec.end());
2903 cout << (*
vec.begin()).
id <<
' ' << (*
vec.rbegin()).
id;
2913 int main(istream &cin, ostream &cout) {
2916 map<int, int, greater<>> m;
2917 for(
int i = 1; i <= n; i++) {
2922 for(
auto [k, v]: m) {
2924 cout << k <<
' ' << v << endl;
2932 int main(istream &cin, ostream &cout) {
2936 for(
int i = 1; i < n; i++) {
2940 for(
int j = 1; j < str.length(); j++) {
2958 int main(istream &cin, ostream &cout) {
2961 unordered_map<string, school> schools;
2962 for(
int i = 0; i < n; i++) {
2966 cin >>
id >> score >> sc;
2969 ss << static_cast<char>(tolower(ch));
2972 if(!schools.contains(sc)) {
2973 schools[sc] =
school(sc);
2975 schools[sc].count++;
2978 schools[sc].a_sum += score;
2981 schools[sc].b_sum += score;
2984 schools[sc].t_sum += score;
2990 vec.reserve(schools.size());
2991 for(
const auto &[
id, sc]: schools) {
2994 sort(
vec.rbegin(),
vec.rend());
2995 unordered_map<int, int> score_rank;
2996 for(
int i =
vec.size() - 1; i >= 0; i--) {
2997 score_rank[
vec[i].get_score()] = i + 1;
2999 cout <<
vec.size() << endl;
3000 for(
int i = 0; i <
vec.size(); i++) {
3001 const auto &sc =
vec[i];
3002 cout << score_rank[sc.get_score()] <<
' ' << sc.id <<
' ' << sc.get_score() <<
' ' << sc.count << endl;
3012 if(score1 != score2) {
3013 return score1 < score2;
3023 int main(istream &cin, ostream &cout) {
3029 string str = oss.str();
3031 for(
auto it = str.rbegin(); it != str.rend(); ++it) {
3042 int main(istream &cin, ostream &cout) {
3045 cout << n / 2 + n / 3 + n / 5 - n / 6 - n / 10 - n / 15 + n / 30 + 1;
3051 int main(istream &cin, ostream &cout) {
3061 bool no_solution =
true;
3062 for(
int a = 10; a <= 99; a++) {
3065 string str_a = oss.str();
3067 for(
auto it = str_a.rbegin(); it != str_a.rend(); ++it) {
3071 const double c =
static_cast<double>(b) / y;
3072 if(c * x == abs(a - b)) {
3073 no_solution =
false;
3080 cout <<
"No Solution";
3086 }
else if(a_f == m) {
3093 }
else if(b_f == m) {
3100 }
else if(c_f == m) {
3110 int main(istream &cin, ostream &cout) {
3114 for(
int i = 0; i < n; i++) {
3117 for(
int i = 0; i + 1 < n; i++) {
3118 for(
int j = i + 1; j < n; j++) {
3120 cout << i + 1 <<
' ' << j + 1;
3125 cout <<
"No Solution";
3131 bool wolf_lie =
false;
3132 for(
int i = 0; i <
vec.size(); i++) {
3133 const bool is_wolf =
vec[i] < 0;
3134 const int target = abs(
vec[i]) - 1;
3135 if(is_wolf && !(target == wolf1 || target == wolf2) || !is_wolf && (target == wolf1 || target == wolf2)) {
3137 if(i == wolf1 || i == wolf2) {
3153 int main(istream &cin, ostream &cout) {
3157 unordered_map<string, unordered_set<string>> um;
3158 for(
int i = 0; i < n; i++) {
3165 for(
int i = 0; i < m; i++) {
3169 unordered_set<string> us;
3170 for(
int j = 0; j < k; j++) {
3175 for(
const auto &g: us) {
3176 for(
const auto &nc: um[g]) {
3177 if(
static_cast<unsigned int>(us.contains(nc)) != 0U) {
3187 cout <<
"Yes" << endl;
3189 cout <<
"No" << endl;
3197 int main(istream &cin, ostream &cout) {
3203 const unsigned k2 = k * k;
3209 for(
unsigned n = 1; n < 10; n++) {
3210 const unsigned nk2 = n * k2;
3213 cout << n <<
' ' << nk2 << endl;
3218 cout <<
"No" << endl;
3226 int main(istream &cin, ostream &cout) {
3231 for(
int j = 0; j < m; j++) {
3232 for(
int i = 0; i < n; i++) {
3239 for(
auto sale: sales) {
3240 maximum = max(maximum, sale);
3242 cout << maximum << endl;
3244 for(i = 0; i < n; i++) {
3245 if(sales[i] == maximum) {
3252 if(sales[i] == maximum) {
3253 cout <<
' ' << i + 1;
3261 int main(istream &cin, ostream &cout) {
3264 cin.getline(a, 1000010);
3265 cin.getline(b, 1000010);
3267 unordered_set<char> us;
3268 for(
int i = 0; i < strlen(a); i++) {
3269 const char ch = a[i];
3275 for(
int i = 0; i < strlen(b); i++) {
3276 const char ch = b[i];
3287 int main(istream &cin, ostream &cout) {
3292 for(
int i = 0; i < l; i++) {
3296 for(
int i = 0, j = k - 1; j < l; i++, j++) {
3297 unsigned int ans = 0;
3298 for(
int m = i; m <= j; m++) {
3303 for(
int m = i; m <= j; m++) {
3304 cout << static_cast<char>(n[m] +
'0');
3317 for(
int i = 2; i <= sqrt(n); i++) {
3327 int main(istream &cin, ostream &cout) {
3331 unordered_map<string, room> rooms;
3332 unordered_map<char, unordered_set<student *>> levels;
3333 unordered_map<string, unordered_map<string, int>> dates;
3334 for(
int i = 0; i < n; i++) {
3336 cin >> stu->id >> stu->grade;
3337 stu->level = stu->id[0];
3338 stu->room = stu->id.substr(1, 3);
3339 stu->date = stu->id.substr(4, 6);
3340 rooms[stu->room].sum += stu->grade;
3341 rooms[stu->room].count++;
3342 levels[stu->level].insert(stu);
3343 dates[stu->date][stu->room]++;
3345 for(
int i = 0; i < m; i++) {
3348 cout <<
"Case " << i + 1 <<
": " << typ <<
' ';
3353 if(
static_cast<unsigned int>(levels.contains(l)) != 0U) {
3354 vector<student *>
vec;
3355 for(
auto *
const pstu: levels[l]) {
3356 vec.emplace_back(pstu);
3359 for(
auto *stu:
vec) {
3360 cout << stu->id <<
' ' << stu->grade << endl;
3363 cout <<
"NA" << endl;
3365 }
else if(typ == 2) {
3368 cout << room_id << endl;
3369 if(
static_cast<unsigned int>(rooms.contains(room_id)) != 0U) {
3370 cout << rooms[room_id].count <<
' ' << rooms[room_id].sum << endl;
3372 cout <<
"NA" << endl;
3374 }
else if(typ == 3) {
3377 cout << date << endl;
3378 if(dates[date].empty()) {
3379 cout <<
"NA" << endl;
3382 vector<pair<string, int>>
vec;
3383 for(
const auto &room_cnt: dates[date]) {
3384 vec.emplace_back(room_cnt);
3387 for(
const auto &[
id, cnt]:
vec) {
3388 cout <<
id <<
' ' << cnt << endl;
3393 cout <<
"NA" << endl;
3403 return stu1->
id < stu2->
id;
3407 if(p1.second != p2.second) {
3408 return p1.second > p2.second;
3410 return p1.first < p2.first;
3415 int main(istream &cin, ostream &cout) {
3418 for(
int i = 0; i < k; i++) {
3421 unordered_set<unsigned> fs;
3422 for(
unsigned f = 1; f <= num; f++) {
3427 vector<unsigned>
vec(fs.size());
3429 for(
const auto f: fs) {
3432 if(
vec.size() < 4) {
3433 cout <<
"No" << endl;
3437 for(
auto i1 = 0; i1 + 3 <
vec.size(); i1++) {
3438 for(
auto i2 = i1 + 1; i2 + 2 <
vec.size(); i2++) {
3439 for(
auto i3 = i2 + 1; i3 + 1 <
vec.size(); i3++) {
3440 for(
auto i4 = i3 + 1; i4 <
vec.size(); i4++) {
3441 if((
vec[i1] +
vec[i2] +
vec[i3] +
vec[i4]) % num == 0) {
3451 cout <<
"Yes" << endl;
3453 cout <<
"No" << endl;
3461 int main(istream &cin, ostream &cout) {
3466 vector grid(n, vector<int>(n));
3467 for(
int i = 0; i < n; i++) {
3468 for(
int j = 0; j < n; j++) {
3473 for(
int i = 0; i < n; i += 2) {
3474 for(
int j = n - 1; j >= 0; j--) {
3475 grid[i][j] = j - indent >= 0 ? grid[i][j - indent] : x;
3478 if(indent == k + 1) {
3482 for(
int j = 0; j < n; j++) {
3484 for(
int i = 0; i < n; i++) {
3497 int main(istream &cin, ostream &cout) {
3502 for(
int i = 0; i < n; i++) {
3507 for(
int i = 0; i < n; i++) {
3510 bottom = max(bottom, v);
3513 cout <<
"No " << bottom - top + 1;
3515 cout <<
"Yes " << top - bottom;
3522 int main(istream &cin, ostream &cout) {
3527 cout <<
"Yes" << endl
3532 cout <<
"Yes" << endl
3537 for(
unsigned int i = n + 1;; i++) {
3540 cout <<
"No" << endl
3545 cout <<
"No" << endl
3550 cout <<
"No" << endl
3562 for(
unsigned int i = 2; i <= sqrt(n); i++) {
3572 int main(istream &cin, ostream &cout) {
3575 unordered_set<string> alumnuses;
3576 for(
int i = 0; i < n; i++) {
3579 alumnuses.insert(
id);
3584 unordered_set<string> guests;
3585 for(
int i = 0; i < m; i++) {
3588 cnt += alumnuses.count(
id);
3591 cout << cnt << endl;
3594 for(
const auto &
id: guests) {
3595 if(alumnuses.contains(
id)) {
3596 vec.emplace_back(
id);
3600 vec = vector(guests.begin(), guests.end());
3603 cout << *
vec.begin();
3607 bool comp::operator()(
const string &s1,
const string &s2)
const {
return s1.substr(6, 8) < s2.substr(6, 8); }
3611 int main(istream &cin, ostream &cout) {
3616 ss << a.substr(a.length() - d, d) << a.substr(0, a.length() - d);
3619 cout << fixed << setprecision(2) << b / stoi(a);
3625 int main(istream &cin, ostream &cout) {
3628 vector<paper>
vec(n);
3629 for(
int i = 0; i < n; i++) {
3631 cin >>
vec[i].price;
3635 cout <<
vec.begin()->id <<
' ' <<
vec.begin()->sale << endl;
3637 cout <<
vec.begin()->id <<
' ' <<
vec.begin()->price *
vec.begin()->sale;
3647 int main(istream &cin, ostream &cout) {
3651 unordered_map<unsigned, unsigned> c2a;
3652 unsigned max_c2 = 0;
3653 for(
unsigned a = m; a <= n; a++) {
3654 unsigned c2 = 3 * a * (a - 1) + 1;
3660 for(
unsigned b = 1; c2 <= max_c2; b++) {
3661 c2 = (b * b + (b - 1) * (b - 1)) * (b * b + (b - 1) * (b - 1));
3662 if(c2a.contains(c2)) {
3664 cout << c2a[c2] <<
' ' << b << endl;
3668 cout <<
"No Solution";
3675 int main(istream &cin, ostream &cout) {
3678 vector<int> diff(10);
3679 for(
int i = 0; i < 10; i++) {
3680 diff[i] = 1 - i * 9;
3682 for(
int i = 1; i <=
N; i++) {
3687 cout <<
"Case " << i << endl;
3688 for(
int j = k; j >= 1; j--) {
3689 const int n = m + diff[j];
3690 const int g = gcd(m, n);
3691 if(n > 0 && g > 2 &&
is_prime(gcd(m, n))) {
3693 dfs(
"", 1, m, k, 0, j, ans);
3696 for(
const auto &str: ans) {
3697 cout << m + diff[j] <<
' ' << str << endl;
3703 cout <<
"No Solution" << endl;
3713 for(
int i = 2; i <= sqrt(n); i++) {
3721 void dfs(
string str,
const int current_i,
const int m,
const int k,
const int current_sum,
const int cnt9, vector<string> &ans) {
3722 if(current_i + cnt9 == k) {
3723 if(
const int r = m - current_sum - cnt9 * 9; (current_i > 1 && r >= 0 || current_i == 1 && r > 0) && r < 9) {
3724 str +=
static_cast<char>(r +
'0');
3728 for(
int i = 0; i < cnt9; i++) {
3731 ans.emplace_back(str);
3734 for(
int i = current_i == 1 ? 1 : 0; i <= 9; i++) {
3735 if(!(current_sum + i + cnt9 * 9 > m || current_sum + i + (k - current_i) * 9 - 1 < m)) {
3736 dfs(str +
static_cast<char>(i +
'0'), current_i + 1, m, k, current_sum + i, cnt9, ans);
3743 int main(istream &cin, ostream &cout) {
3747 cin >> h1 >> h2 >> n;
3748 unordered_map<string, node> um;
3749 for(
int i = 0; i < n; i++) {
3752 um[address].address = address;
3753 cin >> um[address].data >> um[address].next;
3757 for(
string addr = h1; addr !=
"-1"; addr = um[addr].next) {
3758 l1.push_back(um[addr]);
3760 for(
string addr = h2; addr !=
"-1"; addr = um[addr].next) {
3761 l2.push_back(um[addr]);
3763 if(l1.size() < l2.size()) {
3766 l2 = vector(l2.rbegin(), l2.rend());
3768 for(
int cnt = 0, i1 = 0, i2 = 0; i1 < l1.size() || i2 < l2.size(); cnt++, cnt %= 3) {
3770 if(i1 < l1.size()) {
3771 ans.push_back(l1[i1++]);
3774 if(i2 < l2.size()) {
3775 ans.push_back(l2[i2++]);
3779 for(
int i = 0; i < ans.size(); i++) {
3780 cout << ans[i].address <<
' ' << ans[i].data <<
' ' << (i + 1 < ans.size() ? ans[i + 1].address :
"-1") << endl;
3787 int main(istream &cin, ostream &cout) {
3790 vector<unsigned>
vec(n);
3795 unsigned current = 2 + 0 + 1 + 9;
3796 for(
int i = 4; i < n; i++) {
3797 vec[i] = current % 10;
3798 current -=
vec[i - 4];
3801 for(
const auto num:
vec) {
3809 int main(istream &cin, ostream &cout) {
3814 for(
int i = 0; i < n; i++) {
3816 for(
int j = 0; j < m; j++) {
3819 maximum = max(maximum, weight);
3825 champion = max(champion, maximum);
3834 int main(istream &cin, ostream &cout) {
3835 unordered_map<char, int> um;
3840 const char word[6] = {
'S',
't',
'r',
'i',
'n',
'g'};
3842 for(
int i = 0; cnt < 6; i++, i %= 6) {
3843 if(um[word[i]] > 0) {
3856 int main(istream &cin, ostream &cout) {
3857 char matrix[26][7][5];
3858 for(
int i = 0; i < 26; i++) {
3859 for(
int j = 0; j < 7; j++) {
3860 for(
int k = 0; k < 5; k++) {
3861 cin >> matrix[i][j][k];
3870 if(isupper(ch) != 0) {
3873 if(!oss.str().empty()) {
3874 vec.emplace_back(oss.str());
3876 oss = ostringstream();
3879 if(!oss.str().empty()) {
3880 vec.emplace_back(oss.str());
3883 for(
const auto &str:
vec) {
3884 const int w = str.length() * 6 - 1;
3885 vector output(7, vector(w,
' '));
3886 for(
int i = 0; i < str.length(); i++) {
3887 const char c = str[i];
3888 for(
int j = 0; j < 7; j++) {
3889 for(
int k = 0; k < 5; k++) {
3890 output[j][i * 6 + k] = matrix[c -
'A'][j][k];
3894 for(
int i = 0; i < 7; i++) {
3895 for(
int j = 0; j < w; j++) {
3896 cout << output[i][j];
3902 if(cnt++ !=
vec.size() - 1) {
3912 int main(istream &cin, ostream &cout) {
3916 cin >> head >> n >> k;
3917 unordered_map<string, node> um;
3918 for(
int i = 0; i < n; i++) {
3921 um[address].address = address;
3922 cin >> um[address].data >> um[address].next;
3924 deque<vector<node>> deq;
3926 string current = head;
3927 while(current !=
"-1") {
3928 block.emplace_back(um[current]);
3929 if(block.size() == k) {
3930 deq.emplace_front(block);
3933 current = um[current].next;
3935 if(!block.empty()) {
3936 deq.emplace_front(block);
3939 for(
const auto &blk: deq) {
3940 for(
const auto &nd: blk) {
3941 block.emplace_back(nd);
3944 for(
int i = 0; i < block.size(); i++) {
3945 cout << block[i].address <<
" " << block[i].data <<
" " << (i + 1 < block.size() ? block[i + 1].address :
"-1") << endl;
3954 int main(istream &cin, ostream &cout) {
3959 cin >>
N >>
M >> C1 >> C2;
3961 vector<int> rescue(
N);
3962 vector grid(
N, vector(
N, 0));
3963 for(
int i = 0; i <
N; i++) {
3966 for(
int i = 0; i <
M; i++) {
3970 cin >> c1 >> c2 >> L;
3975 vector shortest_cnt(
N, 0);
3976 vector shortest(
N, max_d + 1);
3977 vector max_rescue(
N, 0);
3978 priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>,
comp> pq;
3979 pq.push(make_tuple(C1, 0, rescue[C1]));
3980 while(!pq.empty()) {
3981 auto [c, d, s] = pq.top();
3983 if(d < shortest[c]) {
3985 shortest_cnt[c] = 1;
3987 }
else if(d == shortest[c]) {
3992 if(s > max_rescue[c]) {
3995 for(
int i = 0; i <
N; i++) {
3996 if(grid[c][i] > 0 && d + grid[c][i] <= shortest[i]) {
3997 pq.push(make_tuple(i, d + grid[c][i], s + rescue[i]));
4001 cout << shortest_cnt[C2] <<
' ' << max_rescue[C2];
4006 auto [a1, a2, a3] = a;
4007 auto [b1, b2, b3] = b;
4016 int main(istream &cin, ostream &cout) {
4023 unordered_map<string, node *> um;
4024 for(
int i = 0; i < m; i++) {
4028 if(!um.contains(
id)) {
4029 um[id] =
new node(
id);
4031 auto *
const nd = um[id];
4032 for(
int j = 0; j < k; j++) {
4035 if(!um.contains(cid)) {
4036 um[cid] =
new node(cid);
4038 nd->children.insert(um[cid]);
4041 queue<pair<node *, int>> q;
4042 q.push(make_pair(um[
"01"], 0));
4043 if(um[
"01"] ==
nullptr) {
4047 int current_level = 0;
4050 auto [nd, level] = q.front();
4052 if(level != current_level) {
4053 if(current_level != 0) {
4056 current_level = level;
4060 if(nd->children.empty()) {
4063 for(
auto *c: nd->children) {
4064 q.push(make_pair(c, level + 1));
4067 cout <<
' ' << leaf_cnt;
4073 int main(istream &cin, ostream &cout) {
4074 unsigned long n = 0;
4077 for(
const char ch: s) {
4080 auto oss = ostringstream();
4084 for(
const char ch: s) {
4128 int main(istream &cin, ostream &cout) {
4131 vector<tuple<string, string, string>>
vec(m);
4133 for(
int i = 0; i < m; i++) {
4135 string sign_in_time;
4136 string sign_out_time;
4137 cin >>
id >> sign_in_time >> sign_out_time;
4138 vec[i] = make_tuple(
id, sign_in_time, sign_out_time);
4139 seq.push_back(sign_in_time);
4140 seq.push_back(sign_out_time);
4142 sort(seq.begin(), seq.end());
4143 for(
auto &[
id, in, out]:
vec) {
4149 for(
auto &[
id, in, out]:
vec) {
4150 if(out == seq.back()) {
4160 int main(istream &cin, ostream &cout) {
4165 for(
int i = 0; i < k; i++) {
4172 cout <<
"0 " <<
vec[0] <<
' ' <<
vec[k - 1];
4175 vector<int> pref_sum(k);
4176 pref_sum[0] =
vec[0];
4177 for(
int i = 1; i < k; i++) {
4178 pref_sum[i] = pref_sum[i - 1] +
vec[i];
4180 int max_sum = pref_sum[k - 1];
4182 int max_end = k - 1;
4183 for(
int i = 0; i < k; i++) {
4184 for(
int j = i; j < k; j++) {
4185 const int sum = pref_sum[j] - pref_sum[i] +
vec[i];
4193 cout << max_sum <<
' ' <<
vec[max_start] <<
' ' <<
vec[max_end];
4199 int main(istream &cin, ostream &cout) {
4203 for(
int i = 0; i < n; i++) {
4208 for(
const auto &v:
vec) {
4210 sum += (v - level) * 6;
4212 sum += (level - v) * 4;
4223 int main(istream &cin, ostream &cout) {
4228 for(
int i = 0; i < n; i++) {
4231 cin >> exponent >> coefficient;
4232 A[exponent] = coefficient;
4235 for(
int i = 0; i < n; i++) {
4238 cin >> exponent >> coefficient;
4239 B[exponent] = coefficient;
4242 for(
auto &[exponent, coefficient]: A) {
4243 for(
auto &[exponent2, coefficient2]: B) {
4244 C[exponent + exponent2] += coefficient * coefficient2;
4248 for(
auto &[exponent, coefficient]: C) {
4249 if(coefficient != 0) {
4254 for(
auto it = C.rbegin(); it != C.rend(); ++it) {
4255 if(it->second != 0) {
4256 cout <<
' ' << it->first <<
' ' << fixed << setprecision(1) << it->second;
4264 int main(istream &cin, ostream &cout) {
4267 unordered_map<int, int> ans;
4268 vector<unordered_set<int>> g(n + 1);
4269 for(
int i = 0; i < m; i++) {
4275 for(
int i = 0; i < k; i++) {
4278 if(ans.contains(a)) {
4279 cout << ans[a] << endl;
4282 unordered_set<int> marked;
4284 for(
int j = 1; j <= n; j++) {
4285 if(j != a && !marked.contains(j)) {
4287 dfs(j, g, a, marked);
4290 cout << cnt - 1 << endl;
4296 void dfs(
int i,
const vector<unordered_set<int>> &g,
int occupied, unordered_set<int> &marked) {
4298 for(
auto nxt: g[i]) {
4299 if(!marked.contains(nxt) && nxt != occupied) {
4300 dfs(nxt, g, occupied, marked);
4307 int main(istream &cin, ostream &cout) {
4309 cin >> n >> m >> k >> q;
4310 vector<int> t(k + 1);
4311 vector end_time(k + 1, -1);
4313 for(
int i = 1; i <= k; i++) {
4316 vector<queue<int>>
qs(n);
4318 for(
int i = 0; i < n && i < k; i++) {
4321 for(
int i = 0; i < n * m && i < k; i++, next++) {
4322 qs[i % n].push(i + 1);
4324 int current_time = 0;
4325 while(next <= k && current_time < 540) {
4327 for(
int i = 0; i < n; i++) {
4332 minimum = min(minimum, rest[i]);
4337 if(current_time + minimum >= 540) {
4340 current_time += minimum;
4341 for(
int i = 0; i < n; i++) {
4346 end_time[
qs[i].front()] = current_time;
4348 rest[i] =
qs[i].empty() ? -1 : t[
qs[i].front()];
4353 for(
int i = 0; i < n; i++) {
4354 minimum = min(minimum,
static_cast<int>(
qs[i].size()));
4356 for(
int i = 0; i < n && next <= k; i++) {
4357 if(
qs[i].size() == minimum) {
4366 for(
int i = 0; i < n; i++) {
4367 int queue_time = current_time;
4368 while(!
qs[i].empty() && queue_time < 540) {
4370 queue_time += rest[i];
4373 queue_time += t[
qs[i].front()];
4375 end_time[
qs[i].front()] = queue_time;
4379 for(
int i = 0; i < q; i++) {
4382 const int time = end_time[query];
4384 cout <<
"Sorry" << endl;
4386 const int h = time / 60;
4387 const int m = time % 60;
4388 cout << setw(2) <<
right << setfill(
'0') << h + 8
4390 << setw(2) <<
right << setfill(
'0') << m
4399 int main(istream &cin, ostream &cout) {
4402 while(cin >> n && cin >> d) {
4413 unsigned get_num(
const string &n,
unsigned int d) {
4415 for(
const char ch: n) {
4426 for(
unsigned i = 2; i <= sqrt(n); i++) {
4434 unsigned reverse(
unsigned int n,
unsigned int d) {
4445 int main(istream &cin, ostream &cout) {
4446 map<string, customer> um;
4448 array<unsigned, 24> cost{};
4449 for(
int i = 0; i < cost.size(); i++) {
4452 for(
unsigned i = 1; i <
M; i++) {
4453 sum[i] = sum[i - 1] + cost[(i - 1) % 1440 / 60] / 100.0;
4457 for(
unsigned i = 0; i < n; i++) {
4461 cin >> name >> time >> online;
4462 auto r =
record(name, time, online);
4463 if(!um.contains(name)) {
4466 um[name].records.emplace_back(r);
4468 for(
auto &[name, c]: um) {
4469 sort(c.records.begin(), c.records.end());
4470 for(
auto it = c.records.begin(); it != c.records.end();) {
4471 if((*it).online && (it + 1 == c.records.end() || (*(it + 1)).online)) {
4472 it = c.records.erase(it);
4477 vector<record> new_vec;
4478 bool looking_for_online =
true;
4479 for(
const auto &
record: c.records) {
4481 new_vec.emplace_back(
record);
4482 looking_for_online = !looking_for_online;
4485 c.records = new_vec;
4486 if(!c.records.empty()) {
4487 cout << name <<
' ' << setw(2) << setfill(
'0') <<
right << c.records[0].month << endl;
4489 for(
int i = 0; i < c.records.size(); i += 2) {
4490 const unsigned t2 = c.records[i + 1].get_minutes();
4491 const unsigned t1 = c.records[i].get_minutes();
4492 const double price = sum[t2] - sum[t1];
4494 cout << c.records[i].time.substr(3) <<
' ' << c.records[i + 1].time.substr(3) <<
' ' << t2 - t1 <<
" $" << fixed << setprecision(2) << price << endl;
4496 cout <<
"Total amount: $" << fixed << setprecision(2) << total << endl;
4504 : name(std::move(std::move(name))), time(time), online(online ==
"on-line") {
4506 day = stoi(
time.substr(3, 2));
4517 int main(istream &cin, ostream &cout) {
4522 unsigned current = 0;
4523 priority_queue<unsigned, vector<unsigned>, greater<unsigned>> pq;
4524 vector<customer> customers(n);
4525 for(
unsigned i = 0; i < n; i++) {
4529 customers[i] =
customer(i, time, min(60U, p) * 60);
4531 sort(customers.begin(), customers.end());
4532 for(
unsigned i = 0; i < k; i++) {
4533 pq.push(8 * 60 * 60);
4537 for(
auto &c: customers) {
4538 unsigned t = pq.top();
4540 if(c.arrive_time > 17 * 60 * 60) {
4543 const unsigned start_time = max(c.arrive_time, t);
4544 total += start_time - c.arrive_time;
4546 pq.push(start_time + c.p);
4549 << setprecision(1) <<
static_cast<double>(total) / cnt / 60;
4556 : id(id), arrive_time_str(arrive_time_str), p(p) {
4569 const unsigned s = t % 60;
4571 const unsigned m = t % 60;
4573 const unsigned h = t;
4574 oss << setw(2) << setfill(
'0') <<
right << h <<
':'
4575 << setw(2) << setfill(
'0') <<
right << m <<
':'
4576 << setw(2) << setfill(
'0') <<
right << s;
4580 void assign(priority_queue<
player, vector<player>, greater<player>> &players, priority_queue<
table, vector<table>, greater<table>> &tables, vector<player> &
vec, vector<unsigned> &table_cnt) {
4581 auto p = players.top();
4583 const auto t = tables.top();
4585 p.waiting_time = round((t.end_time - p.arrival_time) / 60.0);
4586 p.start_time = t.end_time;
4589 tables.push({t.id, t.end_time + p.p});
4592 int main(istream &cin, ostream &cout) {
4595 priority_queue<player, vector<player>, greater<player>> normal_players;
4596 priority_queue<player, vector<player>, greater<player>> vip_players;
4599 normal_players.push(nop);
4600 vip_players.push(nop);
4601 for(
unsigned i = 0; i < n; i++) {
4602 string arrival_time_str;
4605 cin >> arrival_time_str >> p >> tag;
4606 auto ply =
player(arrival_time_str, p, tag);
4608 vip_players.push(ply);
4610 normal_players.push(ply);
4616 vector<unsigned> table_cnt(k + 1, 0);
4617 priority_queue<table, vector<table>, greater<table>> normal_tables;
4618 priority_queue<table, vector<table>, greater<table>> vip_tables;
4619 normal_tables.push({0,
INF});
4620 vip_tables.push({0,
INF});
4621 unordered_set<unsigned> vipid;
4622 for(
unsigned i = 0; i < m; i++) {
4627 for(
unsigned i = 1; i <= k; i++) {
4628 if(
static_cast<unsigned int>(vipid.contains(i)) != 0U) {
4629 vip_tables.push({i, 8 * 60 * 60});
4631 normal_tables.push({i, 8 * 60 * 60});
4634 vector<player> players;
4635 while(normal_players.size() > 1 || vip_players.size() > 1) {
4636 auto np = normal_players.top();
4637 auto vp = vip_players.top();
4638 unsigned arrive_time = min(np.arrival_time, vp.arrival_time);
4639 while(normal_tables.top().end_time < arrive_time) {
4640 auto t = normal_tables.top();
4641 normal_tables.pop();
4642 t.end_time = arrive_time;
4643 normal_tables.push(t);
4645 while(vip_tables.top().end_time < arrive_time) {
4646 auto t = vip_tables.top();
4648 t.end_time = arrive_time;
4651 auto nt = normal_tables.top();
4652 auto vt = vip_tables.top();
4653 unsigned end_time = min(nt.end_time, vt.end_time);
4655 if(end_time >= 21 * 60 * 60) {
4659 if(vp.arrival_time <= end_time && vt.end_time == end_time) {
4660 assign(vip_players, vip_tables, players, table_cnt);
4661 }
else if(np.arrival_time < vp.arrival_time) {
4663 assign(normal_players, vip_tables, players, table_cnt);
4665 assign(normal_players, normal_tables, players, table_cnt);
4669 assign(vip_players, vip_tables, players, table_cnt);
4671 assign(vip_players, normal_tables, players, table_cnt);
4675 sort(players.begin(), players.end());
4676 for(
auto &
player: players) {
4679 cout << table_cnt[1];
4680 for(
unsigned i = 2; i <= k; i++) {
4681 cout <<
' ' << table_cnt[i];
4687 : arrival_time_str(arrival_time_str), p(min(120U, p) * 60), vip(tag == 1) {
4712 int main(istream &cin, ostream &cout) {
4718 cin >> cmax >> n >> sp >> m;
4720 for(
unsigned i = 1; i <= n; i++) {
4723 c[i] = ci -
static_cast<int>(cmax / 2);
4725 vector<unordered_map<unsigned, unsigned>> g(n + 1);
4726 for(
unsigned i = 0; i < m; i++) {
4727 unsigned si, sj, tij;
4728 cin >> si >> sj >> tij;
4732 vector shortest(n + 1, -1);
4733 vector min_go(n + 1, -1);
4734 vector min_back(n + 1, -1);
4735 priority_queue<frame, vector<frame>,
frame_cmp> pq;
4739 pq.push(
frame(vector<unsigned>(1, 0), 0u, 0, 0u, 0u));
4740 while(!pq.empty()) {
4745 for(
int i = 1; i < f.
path.size(); i++) {
4746 cout <<
"->" << f.
path[i];
4751 for(
auto &[node, d]: g[f.
node]) {
4754 vector<unsigned> path = f.
path;
4755 path.emplace_back(node);
4781 frame::frame(vector<unsigned> path,
unsigned node,
int bikes,
unsigned len,
unsigned start)
4782 : path(std::move(path)), node(node), bikes(bikes), len(len), start(start) {
4784 this->start += -
bikes;
4791 int main(istream &cin, ostream &cout) {
4792 unsigned long long n, b;
4794 vector<unsigned long long>
vec;
4796 vec.emplace_back(n % b);
4800 for(
int i = 0; i <
vec.size() / 2; i++) {
4807 cout <<
"Yes" << endl;
4809 cout <<
"No" << endl;
4812 for(
int i =
vec.size() - 2; i >= 0; i--) {
4813 cout <<
' ' <<
vec[i];
4820 int main(istream &cin, ostream &cout) {
4823 vector<unsigned> post_order(n);
4824 vector<unsigned> in_order(n);
4825 for(
unsigned i = 0; i < n; i++) {
4826 cin >> post_order[i];
4828 for(
unsigned i = 0; i < n; i++) {
4832 queue<TreeNode *> q;
4836 const auto node = q.front();
4842 cout <<
' ' << node->key;
4844 if(node->left !=
nullptr) {
4847 if(node->right !=
nullptr) {
4848 q.push(node->right);
4854 TreeNode *
parse(vector<unsigned int> post_order,
const vector<unsigned int> &in_order) {
4856 bool in_left =
true;
4858 vector<unsigned> left_post, right_post, left_in, right_in;
4859 for(
auto node: in_order) {
4861 if(node ==
root->key) {
4865 left_in.emplace_back(node);
4869 right_in.emplace_back(node);
4872 for(
auto node: post_order) {
4873 if(node ==
root->key) {
4876 if(
left.contains(node)) {
4877 left_post.emplace_back(node);
4879 right_post.emplace_back(node);
4885 if(!
right.empty()) {
4886 root->right =
parse(right_post, right_in);
4893 int main(istream &cin, ostream &cout) {
4896 unordered_map<unsigned short, unsigned short> us1;
4897 unordered_map<unsigned short, unsigned short> us2;
4898 vector<unsigned short>
vec;
4899 unsigned short c = 0;
4900 for(
int i = n.length() - 1; i >= 0; i--) {
4901 unsigned short ch =
static_cast<unsigned short>(n[i]) -
'0';
4907 vec.emplace_back(ch);
4910 vec.emplace_back(c);
4913 for(
auto it =
vec.rbegin(); it !=
vec.rend(); ++it) {
4919 cout << (us1 == us2 ?
"Yes" :
"No") << endl
4926 int main(istream &cin, ostream &cout) {
4952 for(
auto it = b.
vec.rbegin(); it != b.
vec.rend(); ++it) {
4961 for(
int i = 0; i <
vec.size() / 2; i++) {
4970 vector<unsigned short> v;
4971 unsigned short c = 0;
4972 for(
int i = 0; i <
vec.size(); i++) {
4973 unsigned short n =
vec[i] + n2.
vec[i];
4988 for(
int i = str.length() - 1; i >= 0; i--) {
4989 vec.emplace_back(str[i] -
'0');
4995 int main(istream &cin, ostream &cout) {
4996 const char num[13] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C'};
4998 cin >> input[0] >> input[1] >> input[2];
5002 for(
int i = 0; i < 3; i++) {
5003 unsigned color = input[i];
5005 stk.push(num[color % 13]);
5008 while(stk.size() < 2) {
5011 while(!stk.empty()) {
5022 int dfs(
const vector<unordered_set<int>> &g,
int father,
int nd) {
5024 for(
const auto child: g[nd]) {
5025 if(child != father) {
5026 maximum = max(maximum,
dfs(g, nd, child));
5032 int main(istream &cin, ostream &cout) {
5035 auto g = vector<unordered_set<int>>(n + 1);
5036 vector deep(n + 1, 0);
5038 for(
int i = 1; i < n; i++) {
5045 unordered_set<int> us;
5046 for(
int i = 1; i <= n; i++) {
5047 us.insert(uf.
find(i));
5049 if(us.size() != 1) {
5050 cout <<
"Error: " << us.size() <<
" components";
5054 for(
int i = 1; i <= n; i++) {
5055 deep[i] =
dfs(g, 0, i);
5056 maximum = max(maximum, deep[i]);
5058 for(
int i = 1; i <= n; i++) {
5059 if(deep[i] == maximum) {
5068 int main(istream &cin, ostream &cout) {
5072 vector<int> balloons(n);
5073 unordered_map<int, int> pos;
5074 for(
int i = 0; i < n; i++) {
5076 pos[balloons[i]] = i;
5080 for(
int i = 0; i < n; i++) {
5081 auto it = lower_bound(balloons.begin(), balloons.end(), balloons[i] - h);
5082 const int v = it - balloons.begin();
5083 const int t = i - v + 1;
5086 maximum = balloons[i] - h;
5089 cout << maximum <<
' ' << cnt;
5107 for(
int i = start + 1; i <= end; i++) {
5110 for(
int i = end - 1; i >= start; i--) {
5113 for(
int i = start; i <= end; i++) {
5121 int main(istream &cin, ostream &cout) {
5127 for(
int i = 0; i < n; i++) {
5133 for(
int i = 1; i < n; i++) {
5136 for(
int i = n - 2; i >= 0; i--) {
5139 for(
int i = 0; i < n; i++) {
5148 cout <<
"Yes" << endl;
5150 cout <<
"No" << endl;
5158 int main(istream &cin, ostream &cout) {
5162 vector out(n + 1, 0);
5163 vector in(n + 1, 0);
5164 vector<unordered_set<int>> following(n + 1);
5165 unordered_map<int, int> kols;
5166 for(
int i = 1; i <= n; i++) {
5174 following[i].insert(u);
5177 for(
int i = 1; i <= n; i++) {
5178 if(out[i] == 0 || in[i] / following[i].size() >= t) {
5179 if(!kols.contains(i)) {
5184 for(
const auto &kol: kols) {
5185 for(
const auto &fo: following[kol.first]) {
5186 if(kols.contains(fo)) {
5192 for(
auto &kv: kols) {
5193 maximum = max(maximum, kv.second);
5196 for(
auto &kv: kols) {
5197 if(kv.second == maximum) {
5198 ans.emplace_back(kv.first);
5201 sort(ans.begin(), ans.end());
5202 for(
int i = 0; i < ans.size(); i++) {
5204 if(i != ans.size() - 1) {
5213 Node *
genTree(
const vector<int> &preorder,
const vector<int> &inorder,
int pStart,
int pEnd,
int iStart,
5215 if(pStart > pEnd || iStart > iEnd) {
5218 const int root = preorder[pStart];
5220 unordered_set<int> lefts;
5221 int iLeftEnd = iStart;
5222 while(inorder[iLeftEnd] !=
root) {
5223 lefts.insert(inorder[iLeftEnd++]);
5226 const int iRightStart = iLeftEnd + 2;
5227 int pLeftEnd = pStart + 1;
5228 while(pLeftEnd < preorder.size() && lefts.contains(preorder[pLeftEnd])) {
5231 node->left =
genTree(preorder, inorder, pStart + 1, pLeftEnd - 1, iStart, iLeftEnd);
5232 node->right =
genTree(preorder, inorder, pLeftEnd, pEnd, iRightStart, iEnd);
5237 if(node->
left !=
nullptr) {
5240 if(node->
right !=
nullptr) {
5243 vec.emplace_back(node->
val);
5248 vector<vector<Node *>> lvs;
5249 queue<pair<int, Node *>> q;
5252 const auto p = q.front();
5254 const int level = p.first;
5256 while(lvs.size() < level + 1) {
5257 vector<Node *> topush;
5258 lvs.push_back(topush);
5261 lvs[level].push_back(n);
5262 if(n->
left !=
nullptr) {
5263 q.push({level + 1, n->
left});
5265 if(n->
right !=
nullptr) {
5266 q.push({level + 1, n->
right});
5269 for(
const auto kv: m) {
5270 const int k = kv.first;
5271 const int v = kv.second;
5272 if(k != m.rbegin()->first) {
5273 if(v != pow(2, k)) {
5277 if(v == pow(2, k)) {
5280 if(lvs.size() >= 2) {
5281 bool haveEmpty =
false;
5282 for(
const auto &nd: lvs[lvs.size() - 2]) {
5283 if(nd->left ==
nullptr) {
5290 if(nd->right ==
nullptr) {
5305 int main(istream &cin, ostream &cout) {
5308 vector<int> inorder(n);
5309 vector<int> preorder(n);
5310 for(
int i = 0; i < n; i++) {
5313 for(
int i = 0; i < n; i++) {
5320 for(
int i = 0; i <
vec.size(); i++) {
5322 if(i !=
vec.size() - 1) {
void qs(vector< int > &vec, int l, int r)
bool find(vector< unordered_set< int > > &g, int x, vector< bool > &st, vector< int > &match)
struct acwing::acwing3378::student student
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool is_valid(int year, int month, int day)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool is_palindromic(string str)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool is_true(const vector< int > &vec, int wolf1, int wolf2)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool is_prime(unsigned int n)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool is_prime(unsigned int n)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
void dfs(string str, const int current_i, const int m, const int k, const int current_sum, const int cnt9, vector< string > &ans)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
void dfs(int i, const vector< unordered_set< int > > &g, int occupied, unordered_set< int > &marked)
int main(istream &cin, ostream &cout)
unsigned reverse(unsigned int n, unsigned int d)
unsigned get_num(const string &n, unsigned int d)
int main(istream &cin, ostream &cout)
bool is_prime(unsigned int n)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
void assign(priority_queue< player, vector< player >, greater< player > > &players, priority_queue< table, vector< table >, greater< table > > &tables, vector< player > &vec, vector< unsigned > &table_cnt)
int main(istream &cin, ostream &cout)
string timefmt(unsigned t)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
TreeNode * parse(vector< unsigned int > post_order, const vector< unsigned int > &in_order)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
ostream & operator<<(ostream &os, bi &b)
int main(istream &cin, ostream &cout)
int dfs(const vector< unordered_set< int > > &g, int father, int nd)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
bool isFirstRun(int start, int end)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
int main(istream &cin, ostream &cout)
void postOrder(Node *node, vector< int > &vec)
Node * genTree(const vector< int > &preorder, const vector< int > &inorder, int pStart, int pEnd, int iStart, int iEnd)
bool operator<(const student &stu) const
bool operator<(const Person &p) const
bool operator<(const Person &p) const
unordered_set< char > correct_choices
unordered_set< char > ca
正确选项
bool operator<(const student &) const
bool operator<(const player &) const
bool operator<(const school &) const
bool operator()(const student *stu1, const student *stu2) const
bool operator()(const pair< string, int > &p1, const pair< string, int > &p2) const
bool operator()(const string &s1, const string &s2) const
bool operator()(const paper &p1, const paper &p2) const
bool operator()(const paper &p1, const paper &p2) const
bool operator()(const tuple< int, int, int > &a, const tuple< int, int, int > &b) const
unsigned get_minutes() const
record(string name, const string &time, const string &online)
bool operator<(const record &r) const
bool operator<(const customer &b) const
string arrive_time_str
客户的到达时间,用 HH:MM:SS 表示
unsigned p
客户的业务办理时间 P(单位:分钟)
bool operator()(const customer &c1, const customer &c2) const
bool operator>(const player &p) const
bool operator<(const player &p) const
bool operator>(const table &p) const
unsigned get_back() const
bool operator()(const frame &f1, const frame &f2) const
bool is_palindromic() const
vector< unsigned short > vec
bi operator+(const bi &n2) const