C++の練習を兼ねて, AtCoder Beginner Contest 140 の 問題E (Second Sum) を解いてみた.
■感想.
1. 問題Eは, 方針が見えなかったので, 解説を参考に, AC版に到達できたと思う.
2. 個人的には, 解説のロジックで, 答えが計算可能なことに, 不思議な印象を受けた.
3. 引き続き, 時間を見つけて, 過去問の学習を進めていきたいと思う.
本家のサイト AtCoder Beginner Contest 140 解説 を ご覧下さい.
■C++版プログラム(問題E/AC版).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
// 解き直し. // https://img.atcoder.jp/abc140/editorial.pdf // C++(GCC 9.2.1) #include <bits/stdc++.h> using namespace std; using LL = long long; #define repex(i, a, b, c) for(int i = a; i < b; i += c) #define repx(i, a, b) repex(i, a, b, 1) #define rep(i, n) repx(i, 0, n) #define repr(i, a, b) for(int i = a; i >= b; i--) int p[101010], q[101010]; int main(){ // 1. 入力情報. int N; scanf("%d", &N); rep(i, N){ scanf("%d", &p[i + 1]); q[p[i + 1]] = i + 1; } // 2. 集計. LL ans = 0; multiset<int> S, T; S.insert(0); S.insert(0); T.insert(N + 1); T.insert(N + 1); repr(i, N, 1){ // 追加. int at = q[i]; S.insert(at); T.insert(at); // 集合 S で, 一番大きい要素, 二番目に大きい要素 を 設定. auto sItr = S.lower_bound(at); --sItr; int sMax1 = *sItr; --sItr; int sMax2 = *sItr; // 集合 T で, 一番小さい要素, 二番目に小さい要素 を 設定. auto tItr = T.lower_bound(at); ++tItr; int tMin1 = *tItr; ++tItr; int tMin2 = *tItr; // 加算. LL cur = (LL)(sMax1 - sMax2) * (LL)(tMin1 - at) + (LL)(at - sMax1) * (LL)(tMin2 - tMin1); // printf("sMax1=%d sMax2=%d tMin1=%d tMin2=%d at=%d cur=%lld\n", sMax1, sMax2, tMin1, tMin2, at, cur); ans += (LL)i * cur; } // 3. 出力. printf("%lld", ans); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
[入力例] 3 2 3 1 [出力例] 5 ※AtCoderテストケースより [入力例] 5 1 2 3 4 5 [出力例] 30 ※AtCoderテストケースより [入力例] 8 8 2 7 3 4 5 6 1 [出力例] 136 ※AtCoderテストケースより [入力例] 2 1 2 [出力例] 1 [入力例] 10 5 7 4 1 10 9 6 3 2 8 [出力例] 313 [入力例] 50 30 2 47 45 21 22 36 9 38 34 42 6 12 25 40 44 48 43 4 31 1 46 26 32 29 10 24 18 39 28 20 35 33 17 41 27 15 5 3 16 14 13 50 23 37 11 49 7 8 19 [出力例] 50685 [入力例] 500 377 148 304 214 25 117 54 93 176 65 52 185 498 436 420 412 365 153 409 10 218 104 99 141 184 250 62 11 90 437 26 46 350 228 398 139 376 361 380 466 288 3 279 140 108 340 423 367 208 385 158 63 277 446 478 271 440 323 337 439 318 491 364 308 5 40 322 269 127 237 303 390 276 387 258 4 328 315 346 424 389 143 285 333 6 459 8 273 164 101 201 111 188 356 120 53 110 81 313 225 247 317 255 150 28 434 467 464 403 371 60 112 488 292 402 357 426 235 226 106 332 421 198 351 425 254 195 31 13 219 383 260 173 494 363 163 186 246 345 94 204 449 309 166 15 335 352 314 211 232 455 114 443 115 147 233 165 89 282 64 142 240 430 413 72 203 71 294 224 167 121 79 59 388 453 362 170 1 36 135 14 396 190 347 393 399 41 457 193 159 448 321 395 220 287 368 378 493 354 267 476 245 391 102 408 187 43 284 431 486 22 298 468 251 252 359 341 180 48 179 316 35 116 427 401 217 128 319 16 87 126 207 76 33 349 202 155 21 261 311 75 404 131 484 84 24 500 256 348 156 161 381 97 230 382 435 289 66 206 327 133 344 263 137 212 44 428 32 86 2 305 253 229 134 400 296 405 290 61 334 236 91 172 80 98 372 394 241 414 302 306 264 418 268 485 370 38 70 100 17 223 410 373 419 162 95 171 169 310 221 29 18 496 295 473 58 227 145 407 49 462 450 441 358 312 154 411 125 499 136 461 23 192 96 123 366 55 301 174 88 210 438 30 68 360 353 336 331 375 326 160 320 286 479 458 415 417 330 37 105 481 281 119 422 83 205 259 447 77 452 470 249 73 168 149 278 243 12 69 272 124 463 152 291 483 56 42 406 178 231 416 300 432 222 132 343 182 197 45 293 213 274 191 454 200 355 270 487 78 183 181 109 74 477 122 244 451 480 307 57 474 374 177 239 129 146 248 39 429 460 138 471 379 92 27 324 9 209 215 342 262 433 175 50 445 238 196 444 283 242 492 19 189 469 82 497 266 67 369 490 103 51 475 495 465 113 34 472 144 265 392 339 442 299 199 329 338 456 151 85 118 325 107 489 386 275 384 482 280 7 257 297 194 234 216 397 47 157 130 20 [出力例] 60354172 [入力例] 2500 785 1950 694 1393 942 878 2101 1097 2338 1174 438 1467 221 1083 2248 742 1956 1876 2244 1339 81 2123 1524 1792 1021 2187 596 1144 600 1235 1210 2295 841 954 110 45 1772 528 1067 444 1714 2028 1085 2062 1191 196 1674 2022 1920 2442 2334 1115 2321 1780 1497 867 1117 2266 1087 2090 468 2257 1842 498 1878 983 34 1634 885 2004 1830 1317 295 1349 2138 1395 1599 2252 2136 1249 347 979 2125 1943 1630 1949 429 218 2160 2450 820 855 1676 719 418 861 1007 200 1863 493 327 1877 2238 1265 1367 1932 931 504 1639 1417 285 1795 1438 999 1530 480 1214 1070 1471 94 1036 2463 2206 1605 1289 1105 476 1457 374 53 639 832 1185 1867 1702 278 889 2030 1088 1018 2223 1638 2247 1407 247 510 2434 2065 1004 1506 784 614 738 86 189 836 707 324 1518 448 1570 345 1974 1283 570 1903 1308 291 1684 245 557 1914 256 1340 423 2289 1957 127 1489 85 1014 388 106 523 1999 1343 1162 2305 401 809 1366 2424 1700 2058 571 2005 194 2271 2003 1195 730 1855 161 822 2083 1472 70 1732 144 458 1757 799 925 1890 2464 1291 1813 1124 1409 260 236 1147 467 1479 51 1505 13 333 124 1759 471 1694 1344 1485 1831 1583 1628 2258 833 62 1827 383 972 1944 96 1824 2000 1360 488 1029 342 1545 355 1851 868 1064 1072 1001 2194 1951 1929 2116 788 746 1326 1899 1767 831 1113 2362 1377 1069 2038 1983 294 562 46 1695 2222 443 1777 1157 1227 1282 2200 579 269 1193 459 2129 919 1516 1653 215 1763 2015 1402 83 599 370 14 362 876 1712 973 1212 1190 219 1661 829 2453 927 1864 741 157 959 697 709 1137 2085 1076 1820 938 1882 1724 1213 1175 457 1705 2290 2272 2190 460 2072 1173 638 966 1966 1509 529 2198 2093 864 1410 507 1710 1131 2240 1754 1374 19 1874 653 1028 1345 1180 1561 1720 1602 2346 1199 601 622 924 627 319 2088 764 2416 1941 1948 1519 2468 930 205 1595 865 371 1541 702 906 819 2051 2373 2390 316 2366 2437 1743 1002 613 2404 1352 1677 1900 2211 2158 1267 305 947 138 2011 2150 2422 1209 470 1013 904 1722 309 1187 329 102 2393 1277 2188 1810 2361 279 2104 1106 1594 574 1019 1660 146 1290 213 1947 430 2241 2302 180 1839 893 626 1779 1525 1536 2349 2273 1721 495 1387 112 1140 2403 1838 623 882 337 1424 1625 224 520 692 214 783 361 380 923 669 1324 1111 1741 798 2353 1726 2301 266 619 1650 212 1556 1698 1287 1815 1391 63 2130 1805 1959 209 284 2 2245 1774 1486 1433 552 2178 732 899 610 1907 3 814 1789 1434 139 665 1053 1736 1224 1987 2391 962 679 597 1840 598 774 1733 1552 501 308 2192 114 888 2175 1010 1852 808 1463 1513 1219 33 823 358 2280 1023 2455 280 1383 804 1927 556 1794 2291 1332 620 2007 892 1646 1522 699 703 916 662 1880 79 1022 1152 612 1181 1451 775 346 898 558 1689 801 1269 1231 1885 874 1857 339 325 2498 2254 1784 235 2127 349 1662 71 1973 857 1406 58 1156 126 1107 2243 67 2159 2182 1544 1295 489 1223 2318 1870 1844 676 1627 2406 2328 1296 1641 113 2119 1125 321 1758 508 2025 1454 132 500 1033 1919 691 2451 2228 1149 949 1217 1799 2343 1370 1829 2294 1821 2106 990 2102 1037 1738 1244 2304 1154 854 2121 1469 1431 1112 717 1620 968 2298 1444 364 1917 1955 1618 1584 2377 395 1791 1640 1461 300 1008 1165 223 708 2396 1163 2135 1823 901 72 165 1276 939 1849 1593 174 109 2486 191 2091 815 1167 974 1574 1723 826 1122 1657 2173 1970 4 913 917 384 1633 406 2137 2071 1281 2363 159 1517 1527 252 25 1372 2205 1555 1094 301 1945 375 1664 1379 960 690 2429 675 928 1672 1381 1581 1697 1134 550 1652 1713 1926 2212 2285 1197 2151 704 1101 618 509 2407 830 270 739 428 1755 2024 149 2439 56 10 203 2133 2355 714 1998 1474 2374 1538 437 910 2397 1568 1009 583 441 234 103 2053 1846 1215 1776 2332 805 1845 2419 1311 426 720 576 382 2491 434 122 394 2232 1788 341 420 1453 1309 1709 451 2460 549 2475 880 503 2112 204 2400 244 581 274 1888 1207 2099 532 313 2069 1063 1992 2331 2063 1323 150 1024 1891 73 630 2270 1504 1632 1783 1104 2357 2214 1502 644 766 554 589 828 148 825 834 1095 29 1756 729 240 193 1055 1680 2394 1447 1145 178 1378 1881 982 1911 2210 1232 633 171 1673 1785 2359 2231 2048 683 2170 183 2490 2227 1427 18 1737 2103 2499 1262 1158 564 1682 2284 1904 449 1533 2381 2147 2484 2440 1335 2447 2480 162 1272 1858 1411 2410 1222 1439 945 379 2234 173 522 1571 2113 762 338 995 76 1166 1750 1984 187 1194 531 1728 230 229 1426 963 314 2013 185 1760 1671 1139 228 534 2436 1868 1564 2032 2327 1691 1127 1590 2191 894 1396 1035 1601 2128 1373 296 1790 1921 2380 1531 1740 1442 1925 773 657 1940 2168 757 357 478 1643 634 1108 2431 1141 1116 68 142 1543 254 650 494 1196 956 2329 1092 353 1218 870 875 1298 2261 170 722 141 712 1693 2446 1635 2307 485 1699 1869 951 846 2213 2287 2084 421 1853 992 517 1871 521 1537 42 303 518 1979 2189 265 1082 1186 1030 2452 572 386 2299 2408 1305 344 759 1077 1716 288 603 1663 251 1202 2268 2097 1142 354 1161 322 1675 1466 706 2172 965 461 1164 2311 210 2131 994 1686 607 2177 1727 2313 217 1293 1751 527 65 1579 220 2250 575 1735 2145 1996 725 1958 117 1521 2277 2385 793 2308 747 397 2274 1328 172 844 985 896 680 155 998 543 1368 1278 415 60 1084 17 2255 312 537 1261 2368 2282 735 2476 2309 1254 1535 1093 267 758 259 2193 883 116 1357 2215 1707 1553 2441 2183 1045 1796 1875 2076 918 2322 1415 2449 1251 5 718 1047 1425 376 677 1850 1136 1081 290 2111 2494 343 2479 1408 1171 2208 1894 1336 1764 2345 1245 1832 368 821 1997 1889 1109 1264 1394 2209 688 1170 1622 104 1569 2059 621 206 40 2296 1354 967 1268 1995 1576 511 2398 1960 580 800 1184 1612 2082 1416 47 1616 1648 2239 239 791 1146 463 1747 282 728 2432 891 1964 933 863 1459 915 1449 2417 1971 1240 1865 332 869 1135 1746 1437 1440 497 271 969 1886 1749 1032 1060 439 1651 1400 1048 232 26 2387 392 1333 1132 2010 1450 1797 175 1739 78 1573 334 2221 547 1835 585 642 1355 255 2461 1507 1906 2086 1300 936 553 1967 1418 1837 2249 283 84 2392 566 253 1860 1255 743 23 1793 763 120 1508 981 737 750 606 297 2375 381 1771 1392 1401 90 991 2456 1976 2496 1811 2224 540 1809 2352 2140 1183 286 1090 1346 1896 276 2060 671 797 2369 2482 292 1577 2413 997 2251 2161 1990 1938 1499 582 275 525 1347 2339 1916 1969 1246 559 2225 1054 1302 839 569 152 914 1031 769 2386 1562 1582 1205 695 446 2046 404 890 1334 77 237 372 1554 2040 2493 1399 2471 1079 1589 472 1478 1273 1934 1419 1312 356 41 1065 1814 2035 1520 2019 1912 929 238 95 156 1405 2166 105 1704 107 565 8 2372 473 1985 1706 1325 2107 2124 2014 140 845 1242 1089 505 932 755 1703 1511 733 1361 1715 1315 2066 751 2152 69 721 2002 1455 168 957 2412 1609 2364 2283 88 2047 611 1056 2155 1523 31 262 1526 1879 340 377 2425 1614 2379 1390 182 2333 756 1610 802 307 1512 99 701 1436 483 405 1898 28 2050 2389 648 1498 1624 181 66 306 2089 1848 135 1924 273 177 1825 2037 2288 587 2033 2448 2267 1297 1369 1243 43 1 1559 64 1192 1986 1005 2197 1314 2199 1119 1977 1429 2203 514 2149 1384 2078 1443 2180 1364 1993 887 776 1761 840 2080 943 2105 560 302 2418 555 2045 1188 82 131 1611 197 1266 1071 1550 961 970 1613 2041 2202 1435 944 1256 129 97 2320 1621 920 1656 490 1968 1120 842 538 1778 1380 1631 2039 1565 1606 1580 2246 1854 315 1670 111 32 466 1130 1567 1363 2169 1398 1362 226 818 1994 242 2061 1600 310 1049 2216 2314 716 1413 977 811 2337 1389 563 827 912 359 1385 1597 2459 2204 1375 1169 654 378 2122 749 1456 1241 1915 723 2281 996 2336 1587 629 55 258 748 851 2454 1052 1203 2286 2143 2077 264 948 693 241 1476 1280 2438 2371 1893 1801 866 1422 1954 2263 80 2036 636 153 1252 1669 796 1342 2264 2276 1586 52 1843 2079 222 2195 2017 1233 852 1981 1098 903 2382 2043 1414 2430 849 795 179 134 1572 2259 1388 978 2016 993 1234 980 643 1464 2340 1039 1745 591 1782 2469 1668 2120 1636 2146 790 1062 1348 568 2132 656 2021 673 631 2472 1762 1228 593 1040 860 647 136 909 2029 1096 1787 2176 2457 1321 1818 431 515 1274 616 1253 1226 1769 442 464 661 1826 1304 2443 810 940 1046 435 1692 1204 1766 813 2383 895 360 188 1129 9 1623 645 526 519 1806 1221 640 1798 2324 1006 2162 1200 658 1460 2341 588 2421 1591 61 778 649 1902 1484 1532 216 1872 1563 533 496 462 1884 859 744 133 1027 2074 502 1972 1493 789 373 440 2070 2462 687 425 1946 145 1428 101 1645 685 2465 2073 1991 335 897 1110 506 263 363 760 137 257 1980 862 1816 1619 705 1011 202 664 2351 479 348 1292 663 2365 872 884 907 158 1331 2142 396 37 2196 2326 926 1322 1462 477 2445 422 2144 921 1557 2049 328 2219 1468 536 419 535 779 781 49 1988 710 2096 1942 544 410 1482 1817 1404 2034 2444 1441 492 1936 681 545 752 922 736 1800 1341 2265 1465 2233 59 986 1933 670 1114 2098 123 1285 89 1074 1310 369 2376 2171 2237 2358 1935 387 2157 1198 1148 1803 7 577 1275 36 1327 1487 1121 2134 326 768 1059 953 1448 624 1989 93 198 400 2064 2100 1073 1731 2201 1103 1491 16 1247 512 770 1753 2500 2297 2087 1744 1909 27 1592 248 424 777 30 1432 243 1470 1051 1861 609 908 1748 1208 1458 1201 1248 761 287 1928 2052 1802 75 765 2154 812 713 900 1607 154 2020 1494 2181 1679 2300 277 674 1892 2370 1359 1102 2485 454 1481 1804 1042 567 311 1873 163 2141 231 2488 1020 391 911 1534 1236 792 1337 586 1216 261 1365 413 1316 1263 1123 233 689 1329 298 1666 176 2164 1965 2354 1307 225 121 628 1962 1649 2068 1558 1421 2497 1220 772 1765 806 1356 1717 847 2094 1729 646 1588 98 2184 491 2483 1629 414 682 499 484 700 1540 1901 678 835 602 1017 1834 147 1138 1176 119 2207 2217 1681 1617 399 964 143 989 2367 432 955 1603 1299 2347 843 935 2185 2310 2095 1475 1529 2179 2126 184 684 1615 186 1351 1034 2262 2110 2388 2163 786 2167 20 780 1133 1012 1690 1515 2018 856 1445 595 1930 1229 641 2415 1725 486 541 853 2487 1546 734 946 1038 1303 1178 1542 2378 416 1688 1608 1091 1382 2356 1931 2008 1126 2275 1866 652 551 44 2139 1403 1250 2075 1781 1151 2235 2306 2081 436 1412 2001 592 2420 24 366 1452 987 390 1923 686 2481 1397 455 594 2148 1100 1847 2054 1473 1500 2492 879 417 289 1128 2402 1856 1118 433 1841 753 1883 637 1177 1575 452 1514 1598 1978 1708 659 1496 1078 2458 2186 731 590 524 573 1260 975 2315 1353 1016 2426 2256 1271 617 548 2220 199 160 299 2292 1446 352 1510 1953 2109 208 715 2115 2427 1819 192 660 2466 1143 1313 934 1050 1922 952 1480 2006 1961 2253 1718 22 1168 988 666 971 330 1155 1975 632 1905 447 2401 2405 1211 1043 1752 1812 1279 201 1160 2348 1773 169 1153 92 1086 1044 1807 635 465 2495 1284 281 651 474 11 2319 2395 304 1836 1206 787 1338 1730 1318 1742 817 958 2044 367 2031 403 1696 393 1306 1080 1350 469 1862 1058 794 850 1503 2316 2067 1066 1659 128 1808 1833 2260 1179 1585 1822 937 2153 2042 578 667 1477 546 268 803 2114 950 1483 608 516 2474 941 2026 2242 625 1913 227 2384 1654 2118 848 2174 249 2350 164 1239 1230 1376 50 1897 1495 2055 1423 1665 724 1288 2303 2478 398 450 1658 858 318 905 2342 2325 6 453 1549 1939 1061 1952 711 2323 48 487 2269 873 1330 409 561 456 1734 1701 1026 35 824 2435 1719 74 1420 871 2428 696 118 1319 1828 1182 740 745 976 350 1687 530 2344 1041 408 881 2057 39 1238 385 54 2312 21 427 2467 2423 246 12 130 1320 807 2165 877 1501 250 1551 293 2156 1908 475 2409 2009 1015 1490 445 1068 389 1768 1172 2330 323 1159 481 1937 1647 1895 125 1225 1358 1548 411 1642 1770 542 1859 2317 2279 605 1301 1566 668 402 2226 2278 2012 837 1667 604 2236 211 167 1918 1626 272 1711 2027 2335 190 1258 726 2399 1596 2293 412 1539 1560 615 816 1644 38 1547 1604 1637 1982 1488 336 1683 1492 782 1786 672 2108 2473 2230 320 754 207 1430 902 1910 584 1685 727 1528 2470 1237 1000 2117 482 771 1678 2056 2489 331 1257 1150 1887 365 2218 838 1578 100 151 984 1025 1259 886 166 513 1189 2023 317 767 2229 1386 1075 1099 1286 2433 2360 108 1655 1003 2411 91 351 1294 87 195 539 655 2414 1270 15 698 57 407 1057 2477 1775 1963 115 1371 2092 [出力例] 7740144875 |
■参照サイト
AtCoder Beginner Contest 140