結果
| 問題 |
No.973 余興
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-05-29 03:46:14 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,308 bytes |
| コンパイル時間 | 316 ms |
| コンパイル使用メモリ | 32,128 KB |
| 実行使用メモリ | 222,080 KB |
| 最終ジャッジ日時 | 2024-10-13 19:43:26 |
| 合計ジャッジ時間 | 65,944 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 28 WA * 26 |
ソースコード
#include<stdio.h>
#include<stdbool.h>
#define size 5005
int bsize=size;
int sum(int i,int bit[]){
int s=0;
while(i>0){
s+=bit[i];
i-=i&(-i);
}
return s;
}
void add(int i,int x,int bit[]){
while(i<=bsize){
bit[i]+=x;
i+=i&(-i);
}
}
int main(void){
int flbit[size][size]={0};
int flbitrv[size][size]={0};
bool fl[size][size]={0},cfl;
long long n,x,rw[size]={0};
long long st,fi,te;
int i,j;
scanf("%lld%lld",&n,&x);
for(i=1;i<=n;i++){
scanf("%lld",&rw[i]);
rw[i]+=rw[i-1];
add(i,1,flbit[i]);
add(i,1,flbitrv[i]);
}
for(i=2;i<=n;i++){//leng
for(j=1;j<=(n-i+1);j++){//seg:start
cfl=false;
st=j;fi=j+i-1;
while(st<=fi){
te=(st+fi)>>1;
if(rw[te]-rw[j-1]>x){fi=te-1;}
else{st=te+1;}
}
if((sum(fi,flbit[j])-sum(j-1,flbit[j]))!=0){cfl=true;}
st=j;fi=j+i-1;
while(st<=fi){
te=(st+fi)>>1;
if(rw[j+i-1]-rw[te-1]>x){st=te+1;}
else{fi=te-1;}
}
if((sum(j-i+1,flbitrv[j-i+1])-sum(st-1,flbitrv[j-i+1]))!=0){cfl=true;}
if(cfl){
fl[j][j+i-1]=true;
}
else{
add(j-i+1,1,flbit[j]);
add(j,1,flbitrv[j-i+1]);
}
}
}
if(fl[1][n]){puts("A");}
else{puts("B");}
return 0;
}