QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#601674 | #5278. Mex and Cards | huaxiamengjin# | WA | 1ms | 9844kb | C++14 | 1.1kb | 2024-09-30 10:46:46 | 2024-09-30 10:46:46 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,a[200100];
int mn[1001001],s[1001001],ls[1001001];
void build(int p,int l,int r,int pre){
if(l==r)return mn[p]=a[l],ls[p]=a[l],s[p]=0,void();
int mid=l+r>>1;
build(p<<1,l,mid,pre);build(p<<1|1,mid+1,r,min(mn[p<<1],pre));
mn[p]=min(mn[p<<1],mn[p<<1|1]);
ls[p]=ls[p<<1];
s[p]=s[p<<1]+s[p<<1|1]+(mid+1)*max(mn[p<<1]-ls[p<<1|1],0ll);
}
void push(int p,int l,int r,int x,int pre){
if(l==r)return mn[p]=a[l],ls[p]=a[l],s[p]=0,void();
int mid=l+r>>1;
if(x<=mid)push(p<<1,l,mid,x,pre);
else push(p<<1|1,mid+1,r,x,min(pre,mn[p<<1]));
mn[p]=min(mn[p<<1],mn[p<<1|1]);
ls[p]=ls[p<<1];
s[p]=s[p<<1]+s[p<<1|1]+(mid+1)*max(mn[p<<1]-ls[p<<1|1],0ll);
}
signed main(){
cin>>n;
for (int i=0;i<n;i++)
cin>>a[i];
int q;
cin>>q;
build(1,0,n-1,1e9);
cout<<s[1]<<"\n";
int op,x;
while(q--){
cin>>op;
if(op==1){
cin>>x;
a[x]++;
push(1,0,n-1,x,1e9);
// cout<<mn[1]<<" "<<ls[1]<<" "<<s[1]<<"\n";
cout<<s[1]+mn[1]*n<<"\n";
}else {
cin>>x;
a[x]--;
push(1,0,n-1,x,1e9);
cout<<s[1]+mn[1]*n<<"\n";
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 9844kb
input:
5 2 1 3 0 2 6 1 0 1 1 2 4 1 3 2 1 2 1
output:
4 5 7 7 9 7 3
result:
ok 7 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 9796kb
input:
1 0 0
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: -100
Wrong Answer
time: 1ms
memory: 9788kb
input:
10 3 8 1 4 10 3 10 9 7 10 20 2 5 1 4 1 2 1 4 1 3 1 3 1 0 2 8 1 5 1 4 1 0 1 3 1 8 1 6 1 4 1 1 1 5 1 9 1 6 2 7
output:
4 14 14 22 22 22 22 24 24 24 24 26 26 26 26 26 26 26 26 26 26
result:
wrong answer 1st numbers differ - expected: '14', found: '4'