結果
| 問題 | No.230 Splarraay スプラレェーイ |
| コンテスト | |
| ユーザー |
%20
|
| 提出日時 | 2017-02-03 01:19:31 |
| 言語 | C90 (gcc 15.2.0) |
| 結果 |
AC
|
| 実行時間 | 53 ms / 5,000 ms |
| コード長 | 1,237 bytes |
| 記録 | |
| コンパイル時間 | 252 ms |
| コンパイル使用メモリ | 39,820 KB |
| 最終ジャッジ日時 | 2026-02-24 00:15:33 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
コンパイルメッセージ
main.c:1:1: warning: data definition has no type or storage class
1 | x,l,r;m[1<<18][2];long A,B,a,b;
| ^
main.c:1:7: warning: data definition has no type or storage class
1 | x,l,r;m[1<<18][2];long A,B,a,b;
| ^
main.c: In function 'main':
main.c:16:13: warning: incompatible implicit declaration of built-in function 'scanf' [-Wbuiltin-declaration-mismatch]
16 | for(scanf("%*d%*d");~scanf("%d%d%d",&x,&l,&r);){
| ^~~~~
main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'scanf'
+++ |+#include <stdio.h>
1 | x,l,r;m[1<<18][2];long A,B,a,b;
main.c:67:12: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch]
67 | x=!printf("%ld %ld\n",m[1][0]+A,m[1][1]+B);
| ^~~~~~
main.c:67:12: note: include '<stdio.h>' or provide a declaration of 'printf'
ソースコード
x,l,r;m[1<<18][2];long A,B,a,b;
f(i,k){
if(m[i][0]==2<<k){
m[i<<1|0][0]=m[i][0]>>1;m[i<<1|0][1]=0;
m[i<<1|1][0]=m[i][0]>>1;m[i<<1|1][1]=0;
}else if(m[i][1]==2<<k){
m[i<<1|0][1]=m[i][1]>>1;m[i<<1|0][0]=0;
m[i<<1|1][1]=m[i][1]>>1;m[i<<1|1][0]=0;
}
}
g(i){
m[i][0]=m[i<<1|0][0]+m[i<<1|1][0];
m[i][1]=m[i<<1|0][1]+m[i<<1|1][1];
}
main(i,j,k){
for(scanf("%*d%*d");~scanf("%d%d%d",&x,&l,&r);){
if(x--){
for(i=j=1,k=17;k--;){
f(i,k);
if(i!=j){
f(j,k);
if((l>>k&1)==0){
m[i<<1|1][x]=1<<k;m[i<<1|1][!x]=0;
}
if((r>>k&1)==1){
m[j<<1|0][x]=1<<k;m[j<<1|0][!x]=0;
}
}
i=i<<1|l>>k&1;
j=j<<1|r>>k&1;
}
m[i][x]=1;m[i][!x]=0;
m[j][x]=1;m[j][!x]=0;
for(;++k<17;){
i>>=1;
j>>=1;
g(i);
if(i!=j)g(j);
}
}else{
a=b=0;
for(i=j=1,k=17;k--;){
f(i,k);
if(i!=j){
f(j,k);
if((l>>k&1)==0){
a+=m[i<<1|1][0];b+=m[i<<1|1][1];
}
if((r>>k&1)==1){
a+=m[j<<1|0][0];b+=m[j<<1|0][1];
}
}
i=i<<1|l>>k&1;
j=j<<1|r>>k&1;
}
a+=m[i][0];b+=m[i][1];
if(i!=j){
a+=m[j][0];b+=m[j][1];
}
if(a>b){
A+=a;
}else if(a<b){
B+=b;
}
}
}
x=!printf("%ld %ld\n",m[1][0]+A,m[1][1]+B);
}
%20