QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#311626#6134. Soldier GameyyyyxhWA 426ms12432kbC++231.7kb2024-01-22 16:21:152024-01-22 16:21:15

Judging History

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

  • [2024-01-22 16:21:15]
  • 评测
  • 测评结果:WA
  • 用时:426ms
  • 内存:12432kb
  • [2024-01-22 16:21:15]
  • 提交

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]=0;}
}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: 1472kb

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: 426ms
memory: 12432kb

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
1000000000
1000000000
2000000000
100
135
153
181
189
90
100
164
176
0
147
135
152
100
200
131
134
76
136
999973319
79
171
146
18
183
82
176
105
200
135
103
109
119
126
158
189
70
21
38
999867614
188
161
100
163
116
200
100
101
200
94
23
183
155
98
183
107
139
65
183
999910622
126
153
168
194
96
10...

result:

wrong answer 2nd numbers differ - expected: '0', found: '1000000000'