General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
138819005 Practice:
Sparkle_Twilight
1117G - 12 C++20 (GCC 11-64) Accepted 1403 ms 87152 KB 2021-12-12 02:36:34 2021-12-12 02:36:35
→ Source
#include<bits/stdc++.h>
using namespace std;
 const int N=1001000;
typedef long long ll;
int n;
void add(ll*a,int x,ll y){for(;x<=n;x+=x&-x)a[x]+=y;}
ll gsm(ll*a,int x){ll ret=0;for(;x;x&=x-1)ret+=a[x];return ret;}
 ll sum0[N],sum1[N];
void mdf(int x,int y){add(sum0,x,y);add(sum1,x,(ll)(1-x)*y);}
void modify(int l,int r,int x){mdf(l,x);if(r<n)mdf(r+1,-x);}
ll query(int x){return gsm(sum0,x)*x+gsm(sum1,x);}
vector<int>vec[N];
int q[N],l[N],r[N],a[N],m;ll ans[N];
void solve(){
 for(int i=1;i<=m;++i)vec[l[i]].push_back(i);q[0]=n+1;
 for(int i=n,j=0;i;--i){
  for(;j&&a[q[j]]<a[i];--j);
  modify(i,q[j]-1,1);q[++j]=i;
  for(int t:vec[i])ans[t]+=query(r[t]);
 }
 for(int i=1;i<=n;++i)vec[i].clear(),sum0[i]=sum1[i]=0;
}
 int main(){
 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 cin>>n>>m;
 for(int i=1;i<=n;++i)cin>>a[i];
 for(int i=1;i<=m;++i)cin>>l[i];
 for(int i=1;i<=m;++i)cin>>r[i];
 solve();
 for(int i=1;i<=m;++i)l[i]=n+1-l[i],r[i]=n+1-r[i],swap(l[i],r[i]);reverse(a+1,a+n+1);
 solve();
 for(int i=1;i<=m;++i)ans[i]-=r[i]-l[i]+1,cout<<ans[i]<<" \n"[i==m];
 return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details