QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#40070 | #2831. Game Theory | hit47 | WA | 149ms | 7800kb | C++ | 1.8kb | 2022-07-16 01:02:35 | 2022-07-16 01:02:37 |
Judging History
answer
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define ll long long
const ll mod=998244353,N=2e5+10;
using namespace std;
int tree[N*4],lan[N*4],n;
char s[N];
void build(int root,int l,int r)
{
lan[root]=0;
if(l==r){
tree[root]=(int)(s[l]-'0');
return;
}
int mid=l+r>>1;
build(root<<1,l,mid);
build(root<<1|1,mid+1,r);
tree[root]=tree[root<<1]+tree[root<<1|1];
}
void update(int root,int l,int r,int left,int right)
{
if(lan[root])
{
lan[root]=0;
int mid=l+r>>1;
if(l!=r)lan[root<<1]=1,lan[root<<1|1]=1,tree[root<<1]=mid+1-l-tree[root<<1],tree[root<<1|1]=r-mid-tree[root<<1|1];
}
if(l>=left && r<=right)
{
tree[root]=r+1-l-tree[root];lan[root]=1;
return;
}
if(l>right || r<left)return;
int mid=l+r>>1;
update(root<<1,l,mid,left,right);
update(root<<1|1,mid+1,r,left,right);
tree[root]=tree[root<<1]+tree[root<<1 | 1];
}
long long query(int root,int l,int r,int left,int right)
{
if(lan[root])
{
lan[root]=0;
int mid=l+r>>1;
if(l!=r)lan[root<<1]=1,lan[root<<1|1]=1,tree[root<<1]=mid+1-l-tree[root<<1],tree[root<<1|1]=r-mid-tree[root<<1|1];
}
if(l>=left && r<=right)return tree[root];
if(l>right || r<left)return 0;
int mid=l+r>>1;
return query(root<<1,l,mid,left,right)+query(root<<1|1,mid+1,r,left,right);
}
long long erfen(int l,int r)
{
if(l==r)return 0;
int mid=l+r>>1;
long long l1=query(1,1,n,l,mid),r1=query(1,1,n,mid+1,r);
long long res=0;
res+=r1*(mid+1-l-l1)*2;
if(l1)res+=erfen(l,mid);
if(r1)res+=erfen(mid+1,r);
return res;
}
int main()
{
int q,i,j;
long long ans,t;
while(scanf("%d%d",&n,&q)!=EOF)
{
scanf("%s",s+1);
build(1,1,n);
for(i=1;i<=q;++i)
{
int l,r;
scanf("%d%d",&l,&r);
update(1,1,n,l,r);
ans=erfen(1,n)+query(1,1,n,1,n);
printf("%lld\n",ans%mod);
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 5772kb
input:
3 2 010 1 2 2 3 5 1 00000 1 5
output:
1 3 5
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 3ms
memory: 5768kb
input:
1 1 0 1 1
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 60ms
memory: 5780kb
input:
2 2 01 2 2 2 2 2 2 01 1 2 1 2 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 2 00 1 2 1 2 2 2 11 1 2 1 2 2 2 01 2 2 1 1 2 2 10 2 2 1 2 2 2 01 1 2 1 2 1 2 0 1 1 1 1 2 2 01 1 2 2 2 1 2 0 1 1 1 1 1 2 1 1 1 1 1 2 2 10 1 2 1 1 1 2 0 1 1 1 1 2 2 01 1 2 1 2 2 2 10 1 2 1 1 1 2 0 1 1 1 1 1 2 0 1 1 1 1 1 2 1 1 1 1 1 2 2 10 1 ...
output:
0 3 1 3 0 1 0 1 2 0 0 2 0 1 2 0 1 3 1 0 1 2 1 0 0 1 3 2 1 0 1 3 3 2 1 0 1 0 0 1 0 1 0 2 2 1 0 1 2 1 1 0 2 0 2 3 1 0 0 1 2 0 0 1 0 1 0 1 1 0 1 2 2 0 0 2 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 2 0 3 0 1 0 0 1 1 0 1 0 1 2 0 2 1 0 0 3 1 2 0 1 3 2 1 0 0 1 2 0 2 0 0 1 0 1 1 0 1 0 1 0 1 0 1 2 1 0 3 1 0 3 0 1 0 1 ...
result:
ok 200000 lines
Test #4:
score: -100
Wrong Answer
time: 149ms
memory: 7800kb
input:
11 20 00010111000 1 6 1 11 5 6 8 11 1 4 3 8 4 11 1 7 5 9 1 4 6 10 5 6 1 7 5 10 1 10 9 11 6 8 1 4 8 11 1 4 10 20 0101000010 3 4 2 2 4 8 4 6 6 7 3 7 3 3 1 5 1 5 6 8 2 2 2 4 2 6 5 7 1 3 2 5 6 8 7 9 5 8 3 10 4 20 1011 2 4 1 4 1 3 2 3 1 1 2 2 1 2 2 4 1 2 3 4 3 4 3 4 1 4 2 2 1 4 1 3 1 1 1 3 1 3 2 2 4 20 1...
output:
16 55 53 25 13 15 43 52 41 33 34 40 41 47 33 26 27 35 39 31 19 20 35 38 36 41 36 29 36 29 22 31 20 23 28 20 21 10 14 30 2 10 5 7 10 9 7 2 0 10 0 10 2 1 9 6 7 4 7 8 4 9 1 6 8 3 5 7 3 7 6 8 6 9 6 7 2 0 5 3 66 105 83 68 92 137 92 76 85 92 127 120 119 104 124 65 70 88 61 53 40 43 25 21 32 59 67 32 31 48...
result:
wrong answer 13th lines differ - expected: '43', found: '41'