Submission #1309981

#TimeUsernameProblemLanguageResultExecution timeMemory
1309981StefanSebezFire (JOI20_ho_t5)C11
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double #define mp make_pair const int N=2e5+50; int n,q,a[N],Lv[N],Rv[N]; vector<array<int,3>>Qs[N]; ll res[N]; struct BIT{ ll T[2*N+50]; void Update(int i,ll x){i+=N;for(;i<=2*N;i+=i&-i)T[i]+=x;} ll Get(int i){i+=N;ll x=0;for(;i>=1;i-=i&-i)x+=T[i];return x;} ll Get(int l,int r){return Get(r)-Get(l-1);} }; struct BIT1{ BIT bt,bt1; void Update(int l,int r,ll x){ bt.Update(l,x);bt1.Update(l,x*l); bt.Update(r+1,-x);bt1.Update(r+1,-x*(r+1)); } ll Get(int i){return bt.Get(i)*(i+1)-bt1.Get(i);} ll Get(int l,int r){return Get(r)-Get(l-1);} }bt[2]; vector<array<int,3>>ev0[2*N],ev1[2*N]; void Addtriangle(int l,int r,int x){ ev0[0].pb({l,n,x}); ev0[r-l+1].pb({l,n,-x}); ev1[0].pb({r+1,n,-x}); ev1[r-l+1].pb({r+1,n,x}); } int main(){ scanf("%i%i",&n,&q); for(int i=1;i<=n;i++)scanf("%i",&a[i]); for(int i=1;i<=q;i++){ int t,l,r;scanf("%i%i%i",&t,&l,&r); Qs[t].pb({l,r,i}); } vector<int>mono; for(int i=1;i<=n;i++){ Rv[i]=n+1; while(!mono.empty()&&a[mono.back()]<=a[i]){ Rv[mono.back()]=i; mono.pop_back(); } mono.pb(i); } mono.clear(); for(int i=n;i>=1;i--){ Lv[i]=-n; while(!mono.empty()&&a[mono.back()]<a[i]){ Lv[mono.back()]=i; mono.pop_back(); } mono.pb(i); } for(int i=1;i<=n;i++){ Addtriangle(Lv[i]+1,Rv[i]-1,a[i]); Addtriangle(Lv[i]+1,i-1,-a[i]); Addtriangle(i+1,Rv[i]-1,-a[i]); } for(int t=0;t<=n;t++){ for(auto [l,r,x]:ev0[t])bt[0].Update(l,r,x); for(auto [l,r,x]:ev1[t])bt[1].Update(l,r,x); for(auto [l,r,i]:Qs[t])res[i]=bt[0].Get(l-t,r-t)+bt[1].Get(l,r); } for(int i=1;i<=q;i++)printf("%lld\n",res[i]); return 0; }

Compilation message (stderr)

ho_t5.c:1:10: fatal error: bits/stdc++.h: No such file or directory
    1 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.