QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#311627#6134. Soldier GameyyyyxhWA 433ms12576kbC++231.7kb2024-01-22 16:21:592024-01-22 16:21:59

Judging History

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

  • [2024-01-22 16:21:59]
  • 评测
  • 测评结果:WA
  • 用时:433ms
  • 内存:12576kb
  • [2024-01-22 16:21:59]
  • 提交

answer

#include <cstdio>
#include <algorithm>
#define lc (p<<1)
#define rc (p<<1|1)
using namespace std;
int read(){
	char c=getchar();int x=0;bool f=0;
	while(c<48||c>57) f|=(c=='-'),c=getchar();
	do x=(x<<1)+(x<<3)+(c^48),c=getchar();
	while(c>=48&&c<=57);
	if(f) return -x;
	return x;
}
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=100003;
struct Mat{
	ll f[2][2];
	friend Mat operator*(const Mat A,const Mat B){
		Mat C;
		C.f[0][0]=min(max(A.f[0][0],B.f[0][0]),max(A.f[0][1],B.f[1][0]));
		C.f[0][1]=min(max(A.f[0][0],B.f[0][1]),max(A.f[0][1],B.f[1][1]));
		C.f[1][0]=min(max(A.f[1][0],B.f[0][0]),max(A.f[1][1],B.f[1][0]));
		C.f[1][1]=min(max(A.f[1][0],B.f[0][1]),max(A.f[1][1],B.f[1][1]));
		return C;
	}
	void init(){f[0][0]=f[1][1]=f[1][0]=INF;f[0][1]=-INF;}
}sg[N<<2];
struct node{
	int w,p,t;
	friend bool operator<(const node a,const node b){
		return a.w>b.w;
	}
}s[N<<1];
int n,rk;
int a[N];
void build(int p=1,int l=1,int r=n){
	if(l==r) return sg[p].init();
	int mid=(l+r)>>1;
	build(lc,l,mid);
	build(rc,mid+1,r);
	sg[p]=sg[lc]*sg[rc];
}
void update(node x,int p=1,int l=1,int r=n){
	if(l==r){sg[p].f[x.t][0]=x.w;return;}
	int mid=(l+r)>>1;
	if(x.p<=mid) update(x,lc,l,mid);
	else update(x,rc,mid+1,r);
	sg[p]=sg[lc]*sg[rc];
}
void solve(){
	n=read();rk=0;
	for(int i=1;i<=n;++i){
		a[i]=read();
		s[++rk]=(node){a[i],i,0};
		if(i>1) s[++rk]=(node){a[i]+a[i-1],i,1};
	}
	build();sort(s+1,s+rk+1);
	ll mn=INF;
	for(int i=1;i<=rk;++i){
		update(s[i]);
		mn=min(mn,max(sg[1].f[0][0],sg[1].f[0][1])-s[i].w);
	}
	printf("%lld\n",mn);
}
int main(){
	int tc=read();
	while(tc--) solve();
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3508kb

input:

3
5
-1 4 2 1 1
4
1 3 2 4
1
7

output:

1
2
0

result:

ok 3 number(s): "1 2 0"

Test #2:

score: -100
Wrong Answer
time: 433ms
memory: 12576kb

input:

10010
1
1000000000
1
-1000000000
2
1000000000 -1000000000
4
1000000000 1000000000 -1000000000 -1000000000
3
100 -100 100
16
-17 91 -19 66 100 -70 -71 76 -58 99 52 19 25 -67 -63 -32
7
-95 -26 63 -55 -19 77 -100
17
-100 72 -53 -32 8 -100 53 44 -100 -65 -81 -59 100 100 57 -47 1
11
99 10 -100 3 32 2 -26...

output:

0
0
1000000000
2000000000
100
135
153
181
189
90
63
164
176
0
147
135
152
36
200
131
134
76
136
999973319
79
171
146
18
183
82
176
105
200
135
103
109
119
126
158
189
70
0
38
999859912
188
161
100
163
116
200
0
101
200
50
1
183
155
36
183
107
139
17
183
999910622
126
153
168
194
96
53
96
58
126
47
1...

result:

wrong answer 3rd numbers differ - expected: '0', found: '1000000000'