fork download
  1. program sairsodo;
  2. const MAXN=100000;
  3. type elenco = array[1..MaXN] of qword;
  4. var N,i, idmediana, idmediana1:qword;
  5. calcolacosto,calcolacosto1, altezzainiziale, altezzainiziale1:int64;
  6. costo, costo1:qword;
  7. H, ricordaltezze: elenco;
  8. Procedure scambia (var a,b: qword);
  9. var x:qword;
  10. begin
  11. x:=a;
  12. a:=b;
  13. b:=x;
  14. end;
  15. Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
  16. var inf, sup, medio:qword;
  17. pivot :qword;
  18. begin
  19. inf:=estremoi;
  20. sup:=estremos;
  21. medio:= (estremoi+estremos) div 2;
  22. pivot:=v[medio];
  23. repeat
  24. if (ordinato) then
  25. begin
  26. while (v[inf]<pivot) do inf:=inf+1;
  27. while (v[sup]>pivot) do sup:=sup-1;
  28. end;
  29. if inf<=sup then
  30. begin
  31. scambia(v[inf],v[sup]);
  32. inf:=inf+1;
  33. sup:=sup-1;
  34. end;
  35. until inf>sup;
  36. if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
  37. if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
  38. end;
  39.  
  40. begin
  41. readln(N);
  42. for i:=1 to N do begin read(H[i]); ricordaltezze[i]:=H[i]; end;readln;
  43. costo:=0; costo1:=0;
  44. ordinamento (1,N,H, true);
  45. if N mod 2 <>0 then
  46. begin
  47. idmediana:=(N+1) div 2;
  48. altezzainiziale:=H[idmediana]-(idmediana-1);
  49. if altezzainiziale<0 then altezzainiziale:=0;
  50. for i:=1 to N do
  51. begin
  52. calcolacosto:=(ricordaltezze[i] - (altezzainiziale +i-1));
  53. if calcolacosto<0 then calcolacosto:=-calcolacosto;
  54. costo:= costo + calcolacosto ;
  55. end;
  56. writeln(costo);
  57. end
  58. else
  59. begin
  60. idmediana:=((N div 2)+ ((N+1) div 2)) div 2;
  61. idmediana1:=idmediana+1;
  62. altezzainiziale:=H[idmediana]-(idmediana-1);
  63. altezzainiziale1:=H[idmediana1]-(idmediana1-1);
  64. if altezzainiziale<0 then altezzainiziale:=0;
  65. if altezzainiziale1<0 then altezzainiziale1:=0;
  66. for i:=1 to N do
  67. begin
  68. calcolacosto:=(ricordaltezze[i] - (altezzainiziale +i-1));
  69. if calcolacosto<0 then calcolacosto:=-calcolacosto;
  70. costo:= costo + calcolacosto ;
  71. calcolacosto1:=(ricordaltezze[i] - (altezzainiziale1 +i-1));
  72. if calcolacosto1<0 then calcolacosto1:=-calcolacosto1;
  73. costo1:= costo1 + calcolacosto1 ;
  74. end;
  75. if costo<costo1 then writeln(costo)
  76. else writeln(costo1);
  77. end;
  78.  
  79. end.
  80.  
Success #stdin #stdout 0s 5268KB
stdin
1000
4746 2985 3168 440 1425 4940 4072 3376 801 4264 4858 4924 1393 1739 602 2841 3264 1975 2201 4895 2515 2142 3438 258 2273 4647 3885 3937 3468 798 3454 3214 136 2974 6 1561 2915 4078 1290 68 4694 1148 4992 1087 2888 1947 281 1152 3922 2482 2399 2789 4624 837 3048 1897 1836 3285 2186 304 435 641 4871 571 4967 4877 2133 2882 308 3423 2950 2 923 4295 1090 3811 1242 1371 1315 1516 3853 66 4306 3477 904 3706 1726 2740 1991 3913 4397 2426 906 4268 2998 873 4145 1483 3756 805 4906 3058 808 829 2353 1898 993 4947 4621 3660 2816 3474 3727 2122 3303 983 2180 1381 3723 4171 294 4472 2949 2552 3740 947 3426 4238 2430 3534 43 3688 2944 851 870 298 4101 3215 245 3722 3227 4413 3548 1954 1535 3203 4289 3715 4585 3013 4238 1231 3837 2188 3784 2578 4487 3562 3168 3270 3448 3211 3310 1392 415 532 1690 868 3747 3288 943 3327 2701 843 1633 589 4047 923 656 4984 288 1247 1215 4125 3435 1351 1703 4274 4913 4871 2544 4713 4435 2207 1106 4850 2739 4148 2070 2839 3788 3013 1166 2842 3857 2799 3431 4256 3722 439 4240 4010 1686 455 3136 1473 3159 1191 2100 4424 1063 4644 4138 1850 1851 244 3052 943 744 122 3782 4533 4488 4948 2375 3345 2747 2158 2601 2822 3949 1841 1832 1988 3648 1320 3461 1807 2512 561 1232 4927 1558 370 1777 4761 1966 4829 704 2710 1303 838 3595 791 786 2322 488 4886 4480 3089 2708 4782 1282 892 1770 4931 2213 1583 3090 1077 3497 674 1004 1407 1044 4133 1168 4362 314 3225 3425 1617 4063 2020 3761 1202 4343 4249 2440 175 3691 1500 4957 4973 2392 3079 1256 957 4663 699 2034 4512 1373 4390 919 3770 4875 3439 3132 189 1664 1557 3159 2080 4930 1920 4634 625 2521 2074 2152 1212 3574 3462 2538 2318 1541 3794 3276 2556 845 1662 2068 2219 2405 2987 989 2280 2779 4121 3822 4443 2031 3333 2875 3313 253 2509 3938 4126 935 1090 339 4509 904 4229 1828 2446 3023 1456 1354 221 3118 3423 2440 1875 2762 3429 508 541 3902 4330 1337 2285 2663 4212 598 4268 3074 888 3394 4009 3331 85 4871 4235 4314 1699 1681 3690 3155 3036 3911 2625 2811 2703 4501 573 2484 1361 2467 1386 691 3804 3672 4706 4368 622 3974 3794 1511 3720 4156 1194 158 4027 429 824 2078 3463 4514 1585 2851 4777 562 662 3832 1415 2587 1316 2776 1406 2703 3467 1562 2727 3173 2283 4701 3499 1077 2564 3572 1585 3758 3730 612 4188 4554 4042 2651 421 627 1854 1550 1190 3868 383 2605 1455 1699 382 4214 754 201 776 3481 4727 3059 4535 3226 489 2099 1798 2074 858 528 4039 46 1435 3081 4049 1856 61 903 4758 2603 4771 141 1560 2578 3193 1942 1792 3947 3496 3921 3781 3223 1980 3316 2801 3821 415 4600 896 2625 1480 1287 4023 4267 4368 3072 2475 781 327 2234 3384 1450 3727 4945 381 1920 3239 2173 2220 3087 2446 2353 1310 779 669 464 4600 2436 64 496 1414 2896 1783 437 3516 2504 3510 991 3285 189 4577 3022 1640 3305 2967 2021 1577 2558 546 149 646 2993 2502 3308 3772 3171 3772 3372 1960 188 221 3374 4437 3356 3811 2953 2212 3673 296 1850 3863 4874 4872 1855 4531 4191 3876 1108 3101 774 2610 3747 119 112 3408 3891 4636 2180 3616 1596 2369 189 1322 1806 4897 1485 1111 2110 1511 1407 312 374 1281 1536 3581 812 727 3809 3273 180 4583 883 280 4703 995 3688 4946 1983 868 4914 3579 4589 103 1253 1395 1353 2739 2506 4815 4250 266 127 976 1547 1663 909 3712 3742 4718 3337 274 4301 572 554 4004 2919 4242 303 4903 111 217 3482 1052 1673 1088 2448 3026 179 1306 2841 781 1572 4320 1757 4472 2335 2666 3184 1077 3736 2873 1351 3037 3445 3258 3394 1364 2500 3697 1267 3963 266 1102 16 1939 2190 3816 1317 3721 1474 510 4502 3047 1182 2611 3871 3517 1629 3407 946 365 1280 2298 3402 4725 556 3148 2441 4408 3197 3709 3372 3464 1163 3388 1755 4705 3556 4425 3426 30 1287 2928 4429 2470 539 3300 987 3520 1707 1934 3885 2987 584 3639 4064 2492 3140 2858 1900 1337 1567 272 1153 4082 12 4261 3787 4920 3686 3565 4951 4973 1493 4380 3795 3384 2681 4783 3256 740 1717 2141 80 2301 2132 496 4793 272 3354 3045 1610 1273 4670 4115 355 1034 3376 494 955 3414 4059 906 4740 1904 1638 3535 1640 4319 3318 4896 1412 1387 2037 1492 40 4170 1988 1185 794 343 4231 2404 1616 253 2872 3324 1287 1248 3818 2242 1015 2878 4500 755 4782 1139 642 1423 1810 313 1319 3222 3052 4709 4714 3093 231 3055 630 1025 4750 4861 4782 2718 114 2654 1042 2754 3902 4861 4996 1269 4091 4497 3376 3873 636 4019 1648 2446 684 4320 669 3736 4029 1735 1829 4260 1142 2460 1637 2244 3673 1419 4963 140 4073 2357 2894 4328 3570 2890 597 2661 3739 3974 2887 4375 4345 887 3174 29 207 195 3765 4236 3282 595 4848 4425 4407 1486 3021 3080 2905 2984 3220 3331 1694 2466 2659 264 357 3256 4278 4096 3582 3517 4824 2927 4404 4350 2956 4612 4545 1722 3848 4179 3669 49 4956 3076 1535 2978 2508 792 2314 2081 4123 4008 4547 1782 625 1256 1391 4903 1705 4973 3420 2881 4253 4176 2231 2209 3788 3128 283 3989 2307 304 4038 2264 4732 1925 1594 2241 4069 3908 674 3193 2917 1573 1327 3542 2830 4070 4797 887 396 4569 3768 4649 3745 2351 3210 2534 1831 3494 2875 4138 3798 3265 
stdout
1259342