Submission #44113287
Source Code Expand
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define pf push_front
#define popb pop_back
#define popf pop_front
#define xx first
#define yy second
#define ff(i,s,f) for(int i=s;i<f;i++)
#define fb(i,s,f) for(int i=(s)-1;i>=f;i--)
#define ffi(i,s,f) for(int i=s;i<=f;i++)
#define fbi(i,s,f) for(int i=s;i>=f;i--)
#define srt(a) sort(a.begin(),a.end());
#define srtg(a,int) sort(a.begin(),a.end(),greater<int>())
#define lb(a,x) lower_bound(a.begin(),a.end(),x)
#define ub(a,x) upper_bound(a.begin(),a.end(),x)
#define fnd(a,x) find(a.begin(),a.end(),x)
#define ios ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef string str;
const int maxn=5e5+10;
const int inf=1e9;
int n;
int a[maxn];
int smoze[4*maxn];
int lazy[4*maxn];
int dokle[4*maxn];
void build(int ind=1,int l=0,int r=n-1){
if(l==r){
smoze[ind]=1;
return;
}
int mid=l+(r-l)/2;
build(2*ind,l,mid);
build(2*ind+1,mid+1,r);
smoze[ind]=smoze[2*ind]+smoze[2*ind+1];
}
void push(int ind){
if(lazy[ind]==0) return;
smoze[2*ind]=0;
smoze[2*ind+1]=0;
lazy[2*ind]=1;
lazy[2*ind+1]=1;
lazy[ind]=0;
}
void ubi(int tl,int tr,int ind=1,int l=0,int r=n-1){
if(tl>tr) return;
if(l!=r) push(ind);
if(tl<=l && r<=tr){
smoze[ind]=0;
lazy[ind]=1;
return;
}
int mid=l+(r-l)/2;
if(tl<=mid) ubi(tl,tr,2*ind,l,mid);
if(tr>mid) ubi(tl,tr,2*ind+1,mid+1,r);
smoze[ind]=smoze[2*ind]+smoze[2*ind+1];
}
void update(int t,int v,int ind=1,int l=0,int r=n-1){
if(l==r){
dokle[ind]=v;
return;
}
int mid=l+(r-l)/2;
if(t<=mid) update(t,v,2*ind,l,mid);
else update(t,v,2*ind+1,mid+1,r);
dokle[ind]=min(dokle[2*ind],dokle[2*ind+1]);
}
int mini(int tl,int tr,int ind=1,int l=0,int r=n-1){
if(tl>tr) return inf;
if(tl<=l && r<=tr) return dokle[ind];
int mid=l+(r-l)/2;
int ret=inf;
if(tl<=mid) ret=min(ret,mini(tl,tr,2*ind,l,mid));
if(tr>mid) ret=min(ret,mini(tl,tr,2*ind+1,mid+1,r));
return ret;
}
int moze(int tl,int tr,int ind=1,int l=0,int r=n-1){
if(tl>tr) return 0;
if(tl<=l && r<=tr) return smoze[ind];
int mid=l+(r-l)/2;
int ret=0;
if(tl<=mid) ret+=moze(tl,tr,2*ind,l,mid);
if(tr>mid) ret+=moze(tl,tr,2*ind+1,mid+1,r);
return ret;
}
void solve(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
stack<pair<int,int> > stek;
ll res=0;
build();
for(int i=0;i<n;i++){
while(a[i]!=1 && !stek.empty() && stek.top().first!=a[i]-1){
stek.pop();
}
if(a[i]==1){
stek.push({1,i});
update(i,i);
}else{
if(stek.empty()){
update(i,-1);
}else{
auto tmp=stek.top();
update(i,mini(stek.top().second,i-1));
stek.pop();
stek.push({tmp.first+1,tmp.second});
}
}
ubi(mini(i,i)+1,i);
res+=moze(0,i);
}
cout<<res;
}
int main(){
ios;
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
Submission Info
Submission Time |
|
Task |
B - Insert 1, 2, 3, ... |
User |
FEDIKUS |
Language |
C++ (GCC 9.2.1) |
Score |
600 |
Code Size |
3337 Byte |
Status |
AC |
Exec Time |
475 ms |
Memory |
19616 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
600 / 600 |
Status |
|
|
Set Name |
Test Cases |
Sample |
01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt |
All |
01_sample_01.txt, 01_sample_02.txt, 01_sample_03.txt, 02_rand_1_01.txt, 02_rand_1_02.txt, 02_rand_1_03.txt, 02_rand_1_04.txt, 02_rand_1_05.txt, 02_rand_1_06.txt, 02_rand_1_07.txt, 02_rand_1_08.txt, 02_rand_1_09.txt, 02_rand_1_10.txt, 02_rand_1_11.txt, 02_rand_1_12.txt, 02_rand_1_13.txt, 02_rand_1_14.txt, 02_rand_1_15.txt, 03_rand_2_01.txt, 03_rand_2_02.txt, 03_rand_2_03.txt, 03_rand_2_04.txt, 03_rand_2_05.txt, 03_rand_2_06.txt, 03_rand_2_07.txt, 03_rand_2_08.txt, 03_rand_2_09.txt, 03_rand_2_10.txt, 03_rand_2_11.txt, 03_rand_2_12.txt, 03_rand_2_13.txt, 03_rand_2_14.txt, 03_rand_2_15.txt, 03_rand_2_16.txt, 03_rand_2_17.txt, 03_rand_2_18.txt, 03_rand_2_19.txt, 03_rand_2_20.txt, 03_rand_2_21.txt, 03_rand_2_22.txt, 03_rand_2_23.txt, 03_rand_2_24.txt, 03_rand_2_25.txt, 03_rand_2_26.txt, 03_rand_2_27.txt, 03_rand_2_28.txt, 03_rand_2_29.txt, 03_rand_2_30.txt, 03_rand_2_31.txt, 03_rand_2_32.txt, 03_rand_2_33.txt, 03_rand_2_34.txt, 03_rand_2_35.txt, 03_rand_2_36.txt, 03_rand_2_37.txt, 03_rand_2_38.txt, 03_rand_2_39.txt, 03_rand_2_40.txt, 03_rand_2_41.txt, 03_rand_2_42.txt |
Case Name |
Status |
Exec Time |
Memory |
01_sample_01.txt |
AC |
16 ms |
3472 KiB |
01_sample_02.txt |
AC |
2 ms |
3592 KiB |
01_sample_03.txt |
AC |
4 ms |
3556 KiB |
02_rand_1_01.txt |
AC |
2 ms |
3484 KiB |
02_rand_1_02.txt |
AC |
2 ms |
3548 KiB |
02_rand_1_03.txt |
AC |
210 ms |
17376 KiB |
02_rand_1_04.txt |
AC |
201 ms |
17416 KiB |
02_rand_1_05.txt |
AC |
3 ms |
3492 KiB |
02_rand_1_06.txt |
AC |
291 ms |
17792 KiB |
02_rand_1_07.txt |
AC |
291 ms |
17868 KiB |
02_rand_1_08.txt |
AC |
281 ms |
17724 KiB |
02_rand_1_09.txt |
AC |
281 ms |
17840 KiB |
02_rand_1_10.txt |
AC |
278 ms |
17744 KiB |
02_rand_1_11.txt |
AC |
278 ms |
17832 KiB |
02_rand_1_12.txt |
AC |
285 ms |
17776 KiB |
02_rand_1_13.txt |
AC |
280 ms |
17844 KiB |
02_rand_1_14.txt |
AC |
284 ms |
17828 KiB |
02_rand_1_15.txt |
AC |
284 ms |
17788 KiB |
03_rand_2_01.txt |
AC |
254 ms |
19452 KiB |
03_rand_2_02.txt |
AC |
254 ms |
19500 KiB |
03_rand_2_03.txt |
AC |
257 ms |
19588 KiB |
03_rand_2_04.txt |
AC |
255 ms |
19564 KiB |
03_rand_2_05.txt |
AC |
253 ms |
19592 KiB |
03_rand_2_06.txt |
AC |
253 ms |
19452 KiB |
03_rand_2_07.txt |
AC |
254 ms |
19616 KiB |
03_rand_2_08.txt |
AC |
281 ms |
18744 KiB |
03_rand_2_09.txt |
AC |
279 ms |
18684 KiB |
03_rand_2_10.txt |
AC |
278 ms |
18624 KiB |
03_rand_2_11.txt |
AC |
278 ms |
18636 KiB |
03_rand_2_12.txt |
AC |
278 ms |
18800 KiB |
03_rand_2_13.txt |
AC |
282 ms |
18736 KiB |
03_rand_2_14.txt |
AC |
278 ms |
18808 KiB |
03_rand_2_15.txt |
AC |
292 ms |
18432 KiB |
03_rand_2_16.txt |
AC |
292 ms |
18240 KiB |
03_rand_2_17.txt |
AC |
293 ms |
18280 KiB |
03_rand_2_18.txt |
AC |
292 ms |
18112 KiB |
03_rand_2_19.txt |
AC |
294 ms |
18272 KiB |
03_rand_2_20.txt |
AC |
291 ms |
18220 KiB |
03_rand_2_21.txt |
AC |
291 ms |
18592 KiB |
03_rand_2_22.txt |
AC |
323 ms |
17868 KiB |
03_rand_2_23.txt |
AC |
324 ms |
17864 KiB |
03_rand_2_24.txt |
AC |
326 ms |
17856 KiB |
03_rand_2_25.txt |
AC |
325 ms |
17808 KiB |
03_rand_2_26.txt |
AC |
323 ms |
17800 KiB |
03_rand_2_27.txt |
AC |
325 ms |
17860 KiB |
03_rand_2_28.txt |
AC |
326 ms |
17892 KiB |
03_rand_2_29.txt |
AC |
359 ms |
17788 KiB |
03_rand_2_30.txt |
AC |
354 ms |
17732 KiB |
03_rand_2_31.txt |
AC |
354 ms |
17836 KiB |
03_rand_2_32.txt |
AC |
355 ms |
17732 KiB |
03_rand_2_33.txt |
AC |
354 ms |
17788 KiB |
03_rand_2_34.txt |
AC |
354 ms |
17788 KiB |
03_rand_2_35.txt |
AC |
356 ms |
17664 KiB |
03_rand_2_36.txt |
AC |
430 ms |
17868 KiB |
03_rand_2_37.txt |
AC |
427 ms |
17724 KiB |
03_rand_2_38.txt |
AC |
474 ms |
17720 KiB |
03_rand_2_39.txt |
AC |
436 ms |
17828 KiB |
03_rand_2_40.txt |
AC |
475 ms |
17836 KiB |
03_rand_2_41.txt |
AC |
442 ms |
17840 KiB |
03_rand_2_42.txt |
AC |
447 ms |
17868 KiB |