Submission #71868

#TimeUsernameProblemLanguageResultExecution timeMemory
71868win11905Foehn Phenomena (JOI17_foehn_phenomena)C++11
100 / 100
363 ms169608 KiB
#include <bits/stdc++.h>
using namespace std;

#define long long long 

const int N = 1<<18;

int n, q, s, t;
long T[N], val[N], sum;

void update(int x, int v) {
    if(x == 0) return;
    for(; x <= n; x += x & -x) T[x] += v;
}

long query(int x) {
    long v = 0;
    for(; x > 0; x -= x & -x) v += T[x];
    return v;
}

long f(long a, long b) {
    a = query(a), b = query(b);
    if(a < b) return (a - b) * s;
    return (a - b) * t;
}

int main() {
    scanf("%d %d %d %d", &n, &q, &s, &t);
    for(int i = 0, v; i <= n; ++i) scanf("%d", &v), update(i, v), update(i+1, -v);
    for(int i = 0; i < n; ++i) val[i] = f(i, i+1), sum += val[i];
    for(int i = 0, a, b, c; i < q; ++i) {
        scanf("%d %d %d", &a, &b, &c);
        sum -= f(a-1, a) + (b == n ? 0 : f(b, b+1));
        update(a, c), update(b+1, -c);
        sum += f(a-1, a) + (b == n ? 0 : f(b, b+1));
        printf("%lld\n", sum);
    }
}

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:29:10: 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:30:65: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i = 0, v; i <= n; ++i) scanf("%d", &v), update(i, v), update(i+1, -v);
                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:33:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d", &a, &b, &c);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...