Submission #205673

#TimeUsernameProblemLanguageResultExecution timeMemory
205673T0p_Foehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
486 ms32120 KiB
#include<bits/stdc++.h> using namespace std; struct tree { long long lh, rh, laz, s, t; }; long long arr[200200]; tree seg[800800]; void build(int l, int r, int idx) { if(l == r) return void(seg[idx] = {arr[l], arr[l], 0, 0, 0}); int mid = (l+r)>>1; build(l, mid, idx<<1); build(mid+1, r, idx<<1|1); long long lh = seg[idx<<1].lh; long long rh = seg[idx<<1|1].rh; long long laz = 0; long long s = seg[idx<<1].s + seg[idx<<1|1].s; long long t = seg[idx<<1].t + seg[idx<<1|1].t; if(seg[idx<<1].rh < seg[idx<<1|1].lh) s += seg[idx<<1|1].lh - seg[idx<<1].rh; else t += seg[idx<<1].rh - seg[idx<<1|1].lh; seg[idx] = {lh, rh, laz, s, t}; } void push_lazy(int l, int r, int idx) { if(seg[idx].laz) { seg[idx].lh += seg[idx].laz; seg[idx].rh += seg[idx].laz; if(l != r) { seg[idx<<1].laz += seg[idx].laz; seg[idx<<1|1].laz += seg[idx].laz; } seg[idx].laz = 0; } } void update(int l, int r, int idx, int a, int b, int v) { push_lazy(l, r, idx); if(r < a || b < l) return ; if(a <= l && r <= b) { seg[idx].lh += v; seg[idx].rh += v; if(l!=r) { seg[idx<<1].laz += v; seg[idx<<1|1].laz += v; } return ; } int mid = (l+r)>>1; update(l, mid, idx<<1, a, b, v); update(mid+1, r, idx<<1|1, a, b, v); long long lh = seg[idx<<1].lh; long long rh = seg[idx<<1|1].rh; long long laz = 0; long long s = seg[idx<<1].s + seg[idx<<1|1].s; long long t = seg[idx<<1].t + seg[idx<<1|1].t; if(seg[idx<<1].rh < seg[idx<<1|1].lh) s += seg[idx<<1|1].lh - seg[idx<<1].rh; else t += seg[idx<<1].rh - seg[idx<<1|1].lh; seg[idx] = {lh, rh, laz, s, t}; } int main() { int n, q, s, t; scanf(" %d %d %d %d",&n,&q,&s,&t); for(int i=0 ; i<=n ; i++) scanf(" %lld",&arr[i]); build(0, n, 1); while(q--) { long long l, r, k; scanf(" %d %d %d",&l,&r,&k); update(0, n, 1, l, r, k); printf("%lld\n",seg[1].t * t - seg[1].s * s); } return 0; }

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:81:29: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
   scanf(" %d %d %d",&l,&r,&k);
                     ~~      ^
foehn_phenomena.cpp:81:29: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
foehn_phenomena.cpp:81:29: warning: format '%d' expects argument of type 'int*', but argument 4 has type 'long long int*' [-Wformat=]
foehn_phenomena.cpp:74:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf(" %d %d %d %d",&n,&q,&s,&t);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:76:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %lld",&arr[i]);
   ~~~~~^~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:81:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %d %d %d",&l,&r,&k);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...