QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#235592 | #6627. Line Town | FISHER_ | 7 | 1126ms | 30596kb | C++20 | 2.4kb | 2023-11-02 22:23:08 | 2023-11-02 22:23:09 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;
const int maxn = 500000;
int n;
struct item {
int v, id, s;
bool operator<(const item& b) const {
if (v == b.v) {
if (s == b.s) return id < b.id;
return s < b.s;
}
return v > b.v;
}
} p[maxn + 5];
i64 f[maxn + 5][2][2];
struct BIT {
int t[maxn + 5];
void modify(int x, int v) {
for (; x <= n; x += x & (-x)) t[x] += v;
}
int query(int x) {
int rs = 0;
for (; x; x -= x & (-x)) rs += t[x];
return rs;
}
} t1, t2;
int l0[maxn + 5], l1[maxn + 5];
i64 v[maxn + 5];
bool vis[maxn + 5];
inline void upd(i64& x, i64 y) { x = min(x, y); }
int main() {
scanf("%d", &n);
for (int i = 1, a; i <= n; i++) {
scanf("%d", &a);
if (a < 0) p[i] = {-a, i, ~i & 1};
else p[i] = {a, i, i & 1};
}
sort(p + 1, p + n + 1);
for (int i = 1; i <= n; i++)
memset(f, 63, sizeof(f));
f[0][0][n & 1] = 0;
for (int i = 1; i <= n; i++) t2.modify(i, 1);
int c = 1;
for (int i = 1, j; i <= n; i = j, c++) {
int m;
for (m = i; m <= n && p[m].v == p[i].v && !p[m].s; m++) ;
for (j = m; j <= n && p[j].v == p[i].v; j++) ;
for (int k = i; k < j; k++) t2.modify(p[k].id, -1);
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++) {
i64 o = f[c - 1][x][y];
if (o > 1E12) continue;
l0[0] = i - 1, l1[0] = m - 1;
for (int k = 1, s = x; k <= j - i; k++, s ^= 1) {
l0[k] = l0[k - 1], l1[k] = l1[k - 1];
int nw = s ? ++l1[k] : ++l0[k];
if (l0[k] >= m || l1[k] >= j) v[k] = 1E12;
else {
t1.modify(p[nw].id, 1);
vis[nw] = 1;
v[k] = v[k - 1] + k - t1.query(p[nw].id) + t2.query(p[nw].id);
}
}
for (int k = i; k < j; k++)
if (!vis[k]) t1.modify(p[k].id, 1), vis[k] = 1;
upd(f[c][(x + j - i) & 1][y], o + v[j - i]);
i64 V = 0;
for (int k = j - i, L0 = m, L1 = j, s = y; k; k--, s ^= 1) {
int nw = s ? --L1 : --L0;
if (L0 < i || L1 < m) V = 1E12;
else {
V += k - t1.query(p[nw].id) + n + 1 - j - t2.query(p[nw].id);
t1.modify(p[nw].id, -1);
vis[nw] = 0;
}
if (l0[k - 1] < L0 && l1[k - 1] < L1) upd(f[c][(x + k - 1) & 1][(y + j - i - k + 1) & 1], o + v[k - 1] + V);
}
for (int k = i; k < j; k++)
if (vis[k]) t1.modify(p[k].id, -1), vis[k] = 0;
}
}
i64 ans = 1E12;
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++) upd(ans, f[c - 1][x][y]);
printf("%lld", ans == 1E12 ? -1 : ans);
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 3
Accepted
Test #1:
score: 3
Accepted
time: 10ms
memory: 30520kb
input:
10 1 1 1 1 1 -1 -1 -1 1 -1
output:
-1
result:
ok 1 number(s): "-1"
Test #2:
score: 0
Accepted
time: 4ms
memory: 28532kb
input:
10 1 1 1 1 1 1 -1 1 1 -1
output:
3
result:
ok 1 number(s): "3"
Test #3:
score: 0
Accepted
time: 0ms
memory: 28444kb
input:
1 -1
output:
0
result:
ok 1 number(s): "0"
Test #4:
score: 0
Accepted
time: 1120ms
memory: 30440kb
input:
2000 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 ...
output:
15146
result:
ok 1 number(s): "15146"
Test #5:
score: 0
Accepted
time: 1119ms
memory: 30536kb
input:
2000 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 ...
output:
24933
result:
ok 1 number(s): "24933"
Test #6:
score: 0
Accepted
time: 1121ms
memory: 28476kb
input:
2000 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -...
output:
18090
result:
ok 1 number(s): "18090"
Test #7:
score: 0
Accepted
time: 1121ms
memory: 30408kb
input:
2000 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1...
output:
-1
result:
ok 1 number(s): "-1"
Test #8:
score: 0
Accepted
time: 1119ms
memory: 30380kb
input:
2000 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 ...
output:
9973
result:
ok 1 number(s): "9973"
Test #9:
score: 0
Accepted
time: 1114ms
memory: 28472kb
input:
2000 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 ...
output:
499500
result:
ok 1 number(s): "499500"
Test #10:
score: 0
Accepted
time: 1120ms
memory: 30596kb
input:
2000 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 ...
output:
499500
result:
ok 1 number(s): "499500"
Test #11:
score: 0
Accepted
time: 1116ms
memory: 30520kb
input:
1999 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 ...
output:
499500
result:
ok 1 number(s): "499500"
Test #12:
score: 0
Accepted
time: 1118ms
memory: 30440kb
input:
1997 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 ...
output:
498501
result:
ok 1 number(s): "498501"
Test #13:
score: 0
Accepted
time: 1119ms
memory: 30440kb
input:
2000 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 ...
output:
-1
result:
ok 1 number(s): "-1"
Subtask #2:
score: 0
Time Limit Exceeded
Dependency #1:
100%
Accepted
Test #14:
score: 3
Accepted
time: 0ms
memory: 30424kb
input:
1 1
output:
0
result:
ok 1 number(s): "0"
Test #15:
score: -3
Time Limit Exceeded
input:
500000 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 ...
output:
result:
Subtask #3:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #25:
score: 0
Wrong Answer
time: 7ms
memory: 28380kb
input:
10 0 1 0 0 1 1 -1 0 1 -1
output:
10
result:
wrong answer 1st numbers differ - expected: '9', found: '10'
Subtask #4:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%
Subtask #5:
score: 4
Accepted
Test #60:
score: 4
Accepted
time: 4ms
memory: 30420kb
input:
10 3 10 5 -9 7 2 -6 1 8 0
output:
-1
result:
ok 1 number(s): "-1"
Test #61:
score: 0
Accepted
time: 4ms
memory: 28460kb
input:
10 -9 0 -1 7 5 10 6 3 2 -8
output:
13
result:
ok 1 number(s): "13"
Test #62:
score: 0
Accepted
time: 1115ms
memory: 28340kb
input:
2000 40667 -598150 -1084780 1201651 1570514 -1859539 -2029075 2941581 -2945945 3038404 3447919 5293872 -5335692 -5669647 5973784 6041345 6346915 -7222112 8820986 -9153143 9563103 9749206 -9894732 -11847193 11987150 12161864 13336572 13528051 -13722732 -13836176 -15497141 -15841563 15862227 16618123 ...
output:
-1
result:
ok 1 number(s): "-1"
Test #63:
score: 0
Accepted
time: 1118ms
memory: 28340kb
input:
2000 3038404 -798315545 693574695 172661079 516504064 164016456 193562146 -131746730 382134316 -398886978 188767854 -834289064 -965673210 -826409444 -281381674 450991903 -592752625 81651101 -594873306 -352059270 -651772982 540062674 -769881300 68999588 307151563 -129950325 550154987 354801227 840540...
output:
658039
result:
ok 1 number(s): "658039"
Test #64:
score: 0
Accepted
time: 1123ms
memory: 30420kb
input:
2000 -1095 -925 -1049 -1519 951 -1673 -776 345 -38 -1735 -276 -1730 123 -1629 -1896 -1576 -1115 1145 15 797 -948 287 1487 1195 1269 -1240 -1571 -275 -1915 -369 -1221 -1590 -1392 -100 1688 -1287 -241 1130 -1375 -965 669 -147 -307 -795 -1207 1939 120 -305 -915 -1078 -1448 1458 -603 1935 658 774 1471 7...
output:
668545
result:
ok 1 number(s): "668545"
Test #65:
score: 0
Accepted
time: 1120ms
memory: 28536kb
input:
2000 1290 1487 -1947 -255 457 -1202 1313 36 -1511 898 1739 987 1809 -1986 -1015 -1127 -703 -223 179 557 199 349 1099 -259 -1401 -1244 -1116 646 -295 1713 1512 127 -1660 343 -1921 -1326 -549 831 1963 -1743 1655 -698 1792 366 1517 -51 404 -1853 -1295 1652 -130 -1562 -1850 -582 1504 1888 822 -24 1807 9...
output:
663841
result:
ok 1 number(s): "663841"
Test #66:
score: 0
Accepted
time: 1124ms
memory: 28476kb
input:
2000 56 -1667 -1636 -671 -1311 348 976 1381 -710 -477 -1301 756 -510 495 -1215 -278 1134 950 59 1739 -33 -839 -862 605 761 827 -1708 -1180 -607 1624 -120 -1198 624 -1237 -1874 1788 1005 -331 1266 -467 -1213 1736 -182 594 775 1209 -832 300 1188 -994 -191 -217 1360 -1907 71 436 1294 -590 913 -747 -629...
output:
667052
result:
ok 1 number(s): "667052"
Test #67:
score: 0
Accepted
time: 1123ms
memory: 30424kb
input:
1999 -758656 -113741 -374719 7680 -227905 -201318 -200890 -84484 777096 -167712 -126972 -244117 835074 161027 923025 -224756 973701 36622 -913757 -920737 -976062 461264 147694 -162457 358437 -308202 385370 808271 -523703 -303454 -522131 -664739 -505124 306509 948216 948694 -467953 -768055 769796 486...
output:
675957
result:
ok 1 number(s): "675957"
Test #68:
score: 0
Accepted
time: 0ms
memory: 30384kb
input:
1 0
output:
0
result:
ok 1 number(s): "0"
Test #69:
score: 0
Accepted
time: 0ms
memory: 28336kb
input:
2 1000000000 999999999
output:
-1
result:
ok 1 number(s): "-1"
Test #70:
score: 0
Accepted
time: 1126ms
memory: 30424kb
input:
2000 999998002 999998004 999998006 999998008 999998010 999998012 999998014 999998016 999998018 999998020 999998022 999998024 999998026 999998028 999998030 999998032 999998034 999998036 999998038 999998040 999998042 999998044 999998046 999998048 999998050 999998052 999998054 999998056 999998058 99999...
output:
999000
result:
ok 1 number(s): "999000"
Test #71:
score: 0
Accepted
time: 1119ms
memory: 30504kb
input:
1999 -1000000000 -999012346 -998024692 -997037038 -996049384 -995061730 -994074076 -993086422 -992098768 -991111114 -990123460 -989135806 -988148152 -987160498 -986172844 -985185190 -984197536 -983209882 -982222228 -981234574 -980246920 -979259266 -978271612 -977283958 -976296304 -975308650 -9743209...
output:
0
result:
ok 1 number(s): "0"
Test #72:
score: 0
Accepted
time: 1115ms
memory: 28460kb
input:
1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974 1973 1972 1971 1970 1969 1968 1967 1966 1965 1964 1963 1962 1961 1960 1959 1958 1957 1956 1955 1954 1953 1952 1951 1950 1949 1948 1947 1946 1945 1944 1943 1942 1941 1940 ...
output:
1998
result:
ok 1 number(s): "1998"
Subtask #6:
score: 0
Time Limit Exceeded
Dependency #5:
100%
Accepted
Test #73:
score: 0
Time Limit Exceeded
input:
500000 -725 2759 -4173 -4473 4578 -5071 -7897 -7991 9738 -12600 17445 -18596 -20105 -21103 22718 26116 -26973 33169 -33830 34895 37480 -41216 -41665 43933 44687 45286 -46096 46958 47293 -50534 50597 -52520 -57079 57680 58680 -62109 63682 -64495 -64608 64674 -64848 -65420 67176 -74442 -76904 -77098 -...
output:
result:
Subtask #7:
score: 0
Skipped
Dependency #3:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%