QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#414689 | #6751. Game | CodeK_G | WA | 27ms | 11012kb | C++14 | 1.5kb | 2024-05-19 15:11:13 | 2024-05-19 15:11:14 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 200010;
int n;
int a[N];
LL s[N], w[N];
int cnt[N];
bool st[N];
int h[N], e[N], ne[N], idx;
void add(int a, int b, int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
bool check(LL mid)
{
int a = h[1], b = h[n + 1], c = h[0], d = h[n];
add(1, n + 1, mid);
add(n + 1, 1, -mid);
add(0, n, mid);
add(n, 0, -mid);
memset(st, 0, sizeof st);
memset(cnt, 0, sizeof cnt);
for(int i = 1; i <= n + 1; i ++) s[i] = 1e16;
s[0] = 0;
queue<int>q;
q.push(0);
while(q.size())
{
int t = q.front();
q.pop();
st[t] = false;
for(int i = h[t]; ~i; i = ne[i])
{
int j = e[i];
if(s[j] > s[t] + w[i])
{
s[j] = s[t] + w[i];
cnt[j] = cnt[t] + 1;
if(cnt[j] >= n + 2)
{
h[n] = d;
h[0] = c;
h[n + 1] = b;
h[1] = a;
idx -= 4;
return false;
}
if(!st[j])
{
st[j] = true;
q.push(j);
}
}
}
}
h[n] = d;
h[0] = c;
h[n + 1] = b;
h[1] = a;
idx -= 4;
return true;
}
int main()
{
scanf("%d", &n);
LL r = 0;
for(int i = 1; i <= n; i ++)
{
scanf("%d", &a[i]);
r = r + a[i];
}
r /= 2;
memset(h, -1, sizeof h);
for(int i = 1; i <= n + 1; i ++) add(i, i - 1, 0);
for(int i = 2; i < n + 1; i ++) add(i - 2, i, a[i]);
add(n - 1, n + 1, a[1]);
LL l = 0;
while(l < r)
{
LL mid = l + r + 1 >> 1ll;
if(!check(mid)) r = mid - 1;
else l = mid;
}
printf("%lld\n", r);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 9864kb
input:
2 7 5
output:
5
result:
ok 1 number(s): "5"
Test #2:
score: 0
Accepted
time: 21ms
memory: 11012kb
input:
200000 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
10000050000
result:
ok 1 number(s): "10000050000"
Test #3:
score: 0
Accepted
time: 27ms
memory: 10976kb
input:
200000 861662489 745782129 265647834 549189505 370940221 849264541 392033409 728418798 198339990 783085331 609804410 358855280 393622065 778945552 40954966 557170903 603005334 323311229 205757461 358768170 600992776 530531842 353294276 91047369 31457845 490614287 352572900 59552090 942395591 4363418...
output:
50041744223374
result:
ok 1 number(s): "50041744223374"
Test #4:
score: 0
Accepted
time: 0ms
memory: 8272kb
input:
2 935731565 82105791
output:
82105791
result:
ok 1 number(s): "82105791"
Test #5:
score: 0
Accepted
time: 1ms
memory: 8132kb
input:
3 171939825 807658157 660882486
output:
820240234
result:
ok 1 number(s): "820240234"
Test #6:
score: 0
Accepted
time: 1ms
memory: 8272kb
input:
3 587965118 408133317 80363283
output:
488496600
result:
ok 1 number(s): "488496600"
Test #7:
score: 0
Accepted
time: 2ms
memory: 10004kb
input:
3 587892759 387652767 805243353
output:
890394439
result:
ok 1 number(s): "890394439"
Test #8:
score: 0
Accepted
time: 1ms
memory: 7876kb
input:
3 323926161 274794059 912783085
output:
598720220
result:
ok 1 number(s): "598720220"
Test #9:
score: -100
Wrong Answer
time: 2ms
memory: 7904kb
input:
4 469392609 458382533 411521312 498263282
output:
880913921
result:
wrong answer 1st numbers differ - expected: '918779868', found: '880913921'