QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#186956#3857. Single-track railwaydfsaab#WA 1ms5892kbC++141.3kb2023-09-24 13:31:562023-09-24 13:31:56

Judging History

你现在查看的是最新测评结果

  • [2023-09-24 13:31:56]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:5892kb
  • [2023-09-24 13:31:56]
  • 提交

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;
}

详细

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'