Submission #885516

# Submission time Handle Problem Language Result Execution time Memory
885516 2023-12-09T22:20:17 Z Marco_Escandon Foehn Phenomena (JOI17_foehn_phenomena) C++11
30 / 100
1000 ms 11180 KB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

struct node
{
    int value, lazy;

    node(int v = 0)
    {
        value = v;
        lazy = 0;
    }
};

node tree[(int)1e6]; int l;

void update(int v, int s, int e, int k)
{
    tree[v].lazy += k;
    tree[v].value += (e - s + 1) * k;
}

void push(int v, int s, int e)
{
    if (tree[v].lazy)
    {
        int middle = (s + e) / 2;

        update(2 * v, s, middle, tree[v].lazy);
        update(2 * v + 1, middle + 1, e, tree[v].lazy);

        tree[v].lazy = 0;
    }
}

void increase(int node, int v, int x, int y, int s, int e)
{
    if (x > e || y < s) return;

    if (s >= x && e <= y)
    {
        update(node, s, e, v);
        return;
    }

    push(node, s, e);

    int middle = (s + e) / 2;

    increase(node * 2, v, x, y, s, middle);
    increase(node * 2 + 1, v, x, y, middle + 1, e);

    tree[node].value = tree[node * 2].value
        + tree[node * 2 + 1].value;
}

void increase(int x, int y, int v) { increase(1, v, x, y, 1, l); }

int sum(int node, int x, int y, int s, int e)
{
    if (x > e || y < s) return 0;

    if (s >= x && e <= y)
        return tree[node].value;

    push(node, s, e);
    int middle = (s + e) / 2;

    return sum(node * 2, x, y, s, middle) +
        sum(node * 2 + 1, x, y, middle + 1, e);
}

int query(int x) { return sum(1, x, x, 1, l); }

void Segment_tree(int n)
{
    for (l = 1; l < n; l = (l << 1));
}
 
 
#define int long long
int32_t main()
{
    ll n,q,s,t;
    cin>>n>>q>>s>>t;
    ll cad[n+1];
    Segment_tree (n+2);
    for(int i=0; i<n+1; i++)
    {
        cin>>cad[i];
    }
    ll sol=0;
    for(int i=1; i<=n; i++)
    {
        sol-=s*max(cad[i]-cad[i-1],0LL);
        sol+=t*max(cad[i-1]-cad[i],0LL);
        increase(i+1,i+1,cad[i]);
    }
    while(q--)
    {
        ll a,b,c;
        cin>>a>>b>>c;
        a++;
        b++;
        sol+=s*max(query(a)-query(a-1),0);
        sol-=t*max(query(a-1)-query(a),0);
        if(b!=n+1){
        sol+=s*max(query(b+1)-query(b),0);
        sol-=t*max(query(b)-query(b+1),0);}

        increase(a,b,c);
        
        sol-=s*max(query(a)-query(a-1),0);
        sol+=t*max(query(a-1)-query(a),0);
        if(b!=n+1){
        sol-=s*max(query(b+1)-query(b),0);
        sol+=t*max(query(b)-query(b+1),0);}
        cout<<sol<<"\n";
    }
}
# Verdict Execution time Memory Grader output
1 Correct 10 ms 8280 KB Output is correct
2 Correct 10 ms 8284 KB Output is correct
3 Correct 10 ms 8284 KB Output is correct
4 Correct 10 ms 8288 KB Output is correct
5 Correct 10 ms 8292 KB Output is correct
6 Correct 10 ms 8284 KB Output is correct
7 Correct 10 ms 8284 KB Output is correct
8 Correct 10 ms 8284 KB Output is correct
9 Correct 10 ms 8284 KB Output is correct
10 Correct 10 ms 8284 KB Output is correct
11 Correct 10 ms 8284 KB Output is correct
12 Correct 10 ms 8280 KB Output is correct
13 Correct 7 ms 8284 KB Output is correct
14 Correct 9 ms 8300 KB Output is correct
15 Correct 10 ms 8288 KB Output is correct
16 Correct 8 ms 8536 KB Output is correct
17 Correct 7 ms 8292 KB Output is correct
18 Correct 8 ms 8536 KB Output is correct
19 Correct 2 ms 8028 KB Output is correct
20 Correct 2 ms 8028 KB Output is correct
21 Correct 2 ms 8028 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1025 ms 11180 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 10 ms 8280 KB Output is correct
2 Correct 10 ms 8284 KB Output is correct
3 Correct 10 ms 8284 KB Output is correct
4 Correct 10 ms 8288 KB Output is correct
5 Correct 10 ms 8292 KB Output is correct
6 Correct 10 ms 8284 KB Output is correct
7 Correct 10 ms 8284 KB Output is correct
8 Correct 10 ms 8284 KB Output is correct
9 Correct 10 ms 8284 KB Output is correct
10 Correct 10 ms 8284 KB Output is correct
11 Correct 10 ms 8284 KB Output is correct
12 Correct 10 ms 8280 KB Output is correct
13 Correct 7 ms 8284 KB Output is correct
14 Correct 9 ms 8300 KB Output is correct
15 Correct 10 ms 8288 KB Output is correct
16 Correct 8 ms 8536 KB Output is correct
17 Correct 7 ms 8292 KB Output is correct
18 Correct 8 ms 8536 KB Output is correct
19 Correct 2 ms 8028 KB Output is correct
20 Correct 2 ms 8028 KB Output is correct
21 Correct 2 ms 8028 KB Output is correct
22 Execution timed out 1025 ms 11180 KB Time limit exceeded
23 Halted 0 ms 0 KB -