제출 #76751

#제출 시각아이디문제언어결과실행 시간메모리
76751VardanyanFoehn Phenomena (JOI17_foehn_phenomena)C++14
30 / 100
1072 ms20552 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 200*1000+7;
long long a[N];
long long t[2][4*N];
long long T[4*N];
long long f[4*N];
inline void push(int v,int s,int e){
    if(f[v]){
        T[v] += ((e-s+1)*f[v]);
        if(s!=e){
            f[v*2] += f[v];
            f[v*2+1] += f[v];
        }
    }
    f[v] = 0;
}
inline void update(int v,int s,int e,int l,int r,long long val){
    push(v,s,e);
    if(l>r) return;
    if(s == l && e == r){
        f[v] += val;
        return;
    }
    int m = (s+e)/2;
    update(v*2,s,m,l,min(m,r),val);
    update(v*2+1,m+1,e,max(l,m+1),r,val);
    push(v*2,s,m);
    push(v*2+1,m+1,e);
    T[v] = T[v*2]+T[v*2+1];
}
inline long long query(int v,int s,int e,int l,int r){
    push(v,s,e);
    if(l>r) return 0;
    if(s == l && e == r) return T[v];
    int m = (s+e)/2;
    return query(v*2,s,m,l,min(m,r))+query(v*2+1,m+1,e,max(l,m+1),r);
}
inline void update2(int nshan,int v,int s,int e,int l,int r,long long val){
    if(l>r) return;
    if(s == l && e == r){
        t[nshan][v] = val;
        return;
    }
    int m = (s+e)/2;
    update2(nshan,v*2,s,m,l,min(m,r),val);
    update2(nshan,v*2+1,m+1,e,max(l,m+1),r,val);
    t[nshan][v] = t[nshan][v*2]+t[nshan][v*2+1];
}
inline long long query2(int nshan,int v,int s,int e,int l,int r){
    if(l>r) return 0;
    if(s == l && e == r) return t[nshan][v];
    int m = (s+e)/2;
    return query2(nshan,v*2,s,m,l,min(m,r))+
           query2(nshan,v*2+1,m+1,e,max(l,m+1),r);
}
int main(){
    int n,q;
    long long ss,tt;
    scanf("%d%d%lld%lld",&n,&q,&ss,&tt);
    for(int i = 0;i<=n;i++){
            scanf("%lld",&a[i]);
            update(1,0,n,i,i,a[i]);
    }
    for(int i = 1;i<=n;i++){
        long long df = a[i-1]-a[i];
        if(df>=0){
            update2(1,1,1,n,i,i,df);
        }
        else{
            update2(0,1,1,n,i,i,df);
        }
    }
    /*
    for(int i = 1;i<=n;i++){
        cout<<query2(1,1,1,n,i,i)<<endl;
    }*/
    while(q--){
        int l,r;
        long long val;
        scanf("%d%d%lld",&l,&r,&val);
        update2(0,1,1,n,l,l,0);
        update2(1,1,1,n,l,l,0);
        update(1,0,n,l,r,val);
        long long x = query(1,0,n,l,l);
        long long y = query(1,0,n,l-1,l-1);
        y-=x;
        if(y<0) {
            update2(0,1,1,n,l,l,y);
        }
        else{
            update2(1,1,1,n,l,l,y);
        }
        if(r<n){
        update2(0,1,1,n,r+1,r+1,0);
        update2(1,1,1,n,r+1,r+1,0);
        x = query(1,0,n,r,r);
        y = query(1,0,n,r+1,r+1);
        x-=y;
        if(x<0){
            update2(0,1,1,n,r+1,r+1,x);
        }
        else{
            update2(1,1,1,n,r+1,r+1,x);
        }
        }
        long long w = query2(0,1,1,n,1,n);
   //     cout<<w<<endl;
        w*=ss;
        long long e = query2(1,1,1,n,1,n);
   //     cout<<e<<endl;
        e*=tt;
        w+=e;
        printf("%lld\n",w);
        /*for(int i = 1;i<=n;i++){
            cout<<query2(0,1,1,n,i,i)<<" "<<query2(1,1,1,n,i,i)<<endl;
        }*/
    }

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:60:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%lld%lld",&n,&q,&ss,&tt);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:62:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%lld",&a[i]);
             ~~~~~^~~~~~~~~~~~~~
foehn_phenomena.cpp:81:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%lld",&l,&r,&val);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...