QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#212936 | #6134. Soldier Game | RDFZchenyy | WA | 647ms | 18216kb | C++14 | 1.9kb | 2023-10-13 23:21:22 | 2023-10-13 23:21:22 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
#define ls (id<<1)
#define rs (id<<1)|1
#define MOD 998244353
struct Mat{
long long a[2][2];
Mat operator*(const Mat& y)const{
Mat ret;
ret.a[0][0]=(a[0][0]*y.a[0][0]+a[0][1]*y.a[1][0])%MOD;
ret.a[0][1]=(a[0][0]*y.a[0][1]+a[0][1]*y.a[1][1])%MOD;
ret.a[1][0]=(a[1][0]*y.a[0][0]+a[1][1]*y.a[1][0])%MOD;
ret.a[1][1]=(a[1][0]*y.a[0][1]+a[1][1]*y.a[1][1])%MOD;
return ret;
}
};
Mat t[MAXN<<2];
struct Cat{
int num,typ;
long long sum;
};
Cat c[MAXN<<1];
int n;
long long ans=1e18;
long long a[MAXN];
bool cmp(Cat a,Cat b){
return a.sum<b.sum;
}
void update(int id){
t[id]=t[ls]*t[rs];
return;
}
void build(int id,int l,int r){
if(l==r){
t[id].a[0][1]=1;
t[id].a[0][0]=0;
t[id].a[1][1]=0;
t[id].a[1][0]=0;
return;
}
int mid=(l+r)>>1;
build(ls,l,mid);
build(rs,mid+1,r);
update(id);
return;
}
void change(int id,int l,int r,int ti,int typ,int val){
if(l==r){
t[id].a[typ][0]+=val;
return;
}
int mid=(l+r)>>1;
if(ti<=mid){
change(ls,l,mid,ti,typ,val);
}else{
change(rs,mid+1,r,ti,typ,val);
}
update(id);
return;
}
long long query(){
return t[1].a[0][0];
}
bool ok(){
return query()!=0;
}
int run(){
ans=1e18;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
c[i].typ=0;
c[i].num=i;
c[i].sum=a[i];
if(i!=1){
c[i+n-1].typ=1;
c[i+n-1].num=i;
c[i+n-1].sum=a[i]+a[i-1];
}
}
stable_sort(c+1,c+n*2,cmp);
build(1,1,n);
for(int nl=1,nr=0;nl<=n;nl++){
while((!ok())&&(nr<=2*n-2)){
nr++;
change(1,1,n,c[nr].num,c[nr].typ,1);
}
if(ok()){
// cntans
ans=min(ans,c[nr].sum-c[nl].sum);
}
change(1,1,n,c[nl].num,c[nl].typ,-1);
}
printf("%lld\n",ans);
return 0;
}
int T;
int main(){
scanf("%d",&T);
for(int i=1;i<=T;i++){
run();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 7824kb
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: 647ms
memory: 18216kb
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 0 2000000000 100 135 103 181 189 84 63 164 176 0 147 135 152 36 200 131 134 0 136 0 72 171 146 0 183 77 176 89 200 135 38 109 119 126 158 189 70 0 38 999804364 188 161 0 116 116 200 0 101 200 39 0 183 139 0 183 107 139 0 178 85993 126 153 168 163 96 53 96 52 126 47 130 79 24 123 188 173 33 0 83 ...
result:
wrong answer 77th numbers differ - expected: '0', found: '24'