QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#186956 | #3857. Single-track railway | dfsaab# | WA | 1ms | 5892kb | C++14 | 1.3kb | 2023-09-24 13:31:56 | 2023-09-24 13:31:56 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int M=2e5+5;
int n,m;
int A[M];
struct SFoNKH
{
#define tp T[p]
#define lp T[p<<1]
#define rp T[p<<1|1]
#define ls p<<1
#define rs p<<1|1
struct node
{
int L,R;
long long sm;
}T[M<<2];
void Up(int p){tp.sm=lp.sm+rp.sm;}
void Build(int L,int R,int p)
{
tp.L=L,tp.R=R;
if(L==R){tp.sm=A[L];return;}
int mid=(L+R)>>1;
Build(L,mid,ls);Build(mid+1,R,rs);Up(p);
}
void Update(int pos,int val,int p)
{
if(tp.L==tp.R){tp.sm=val;return;}
int mid=(tp.L+tp.R)>>1;
if(pos<=mid)Update(pos,val,ls);
else Update(pos,val,rs);
Up(p);
}
long long Qs(){return T[1].sm;}
long long Query(long long K,int p)
{
if(tp.L==tp.R)return tp.sm<=K?tp.sm:0;
if(lp.sm<=K)return lp.sm+Query(K-lp.sm,rs);
else return Query(K,ls);
}
#undef tp
#undef lp
#undef rp
#undef ls
#undef rs
}T;
long long Query()
{
long long qs=T.Qs();
long long L=T.Query((qs+1)/2,1);
long long R=qs-L;
// printf("qs = %lld L = %lld R = %lld\n",qs,L,R);
return abs(L-R);
}
void Solve()
{
T.Build(1,n,1);
printf("%lld\n",Query());
for(int i=1,u,v;i<=m;i++)
{
scanf("%d%d",&u,&v);
T.Update(u,v,1);
printf("%lld\n",Query());
}
}
int main()
{
scanf("%d",&n);n--;
for(int i=1;i<=n;i++)scanf("%d",&A[i]);
scanf("%d",&m);
Solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3844kb
input:
2 39 7 1 20 1 70 1 56 1 37 1 37 1 37 1 91
output:
39 20 70 56 37 37 37 91
result:
ok 8 lines
Test #2:
score: 0
Accepted
time: 1ms
memory: 5892kb
input:
3 8 41 0
output:
33
result:
ok single line: '33'
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 3844kb
input:
30 86 100 80 30 23 17 90 98 20 3 43 31 49 14 14 47 13 44 7 30 50 29 67 68 56 69 28 61 81 10 21 23 7 99 16 70 3 50 4 17 26 42 7 37 10 43 26 83 13 96
output:
8 79 70 93 25 10 11 17 5 18 1
result:
wrong answer 2nd lines differ - expected: '19', found: '79'