Submission #288205

# Submission time Handle Problem Language Result Execution time Memory
288205 2020-09-01T10:01:52 Z NemanjaSo2005 Foehn Phenomena (JOI17_foehn_phenomena) C++14
40 / 100
538 ms 15736 KB
#include<bits/stdc++.h>
#define ll long long
#define LIMIT 7000000
using namespace std;
ll koliko[200005],povecaj,res=0,T,S,N,Q,u1,u2,r1,r2,r3,r4,segmentno[400010];
char buffer[LIMIT],*pos;
ll nadji(int gde){
    ll ret=0;
    while(gde){
        ret+=segmentno[gde];
        gde/=2;
    }
    return ret;
}
void dodaj(int gde,int lb,int db,int l,int r){
    if(lb>db or l>r)
        return;
    if(lb==l and db==r){
        segmentno[gde]+=povecaj;
        return;
    }
    int mid=(l+r)/2;
    dodaj(gde*2,lb,mid,l,min(mid,r));
    dodaj(gde*2+1,mid+1,db,max(l,mid+1),r);
    return;
}
ll getll(){
    ll positive=1,number;
    while(*pos!='-' and *pos<48)
        *pos++;
    if(*pos=='-'){
        *pos++;
        positive=-1;
    }
    else positive=1;
    number=*pos-'0';
    *pos++;
    while(*pos>=48){
        number=number*10+*pos-'0';
        *pos++;
    }
    return positive*number;
}
int main(){
    fread(buffer,1,LIMIT,stdin);
    pos=buffer;
    N=getll();
    Q=getll();
    S=getll();
    T=getll();
    N++;
    if(N<=5000){
        for(int i=1;i<=N;i++)
        koliko[i]=getll();
    for(int i=1;i<N;i++)
        if(koliko[i]<koliko[i+1])
            res-=S*abs(koliko[i]-koliko[i+1]);
        else res+=T*abs(koliko[i]-koliko[i+1]);
   // cout<<res<<endl;
    while(Q--){
        u1=getll();
        u2=getll();
        povecaj=getll();
        u1++;
        u2++;
        r1=koliko[u1-1];
        r2=koliko[u1];
        r3=koliko[u2];
        r4=koliko[u2+1];
        if(u1!=1){
            if(r1<r2)
                res+=(r2-r1)*S;
            else res-=(r1-r2)*T;
        }
        if(u2!=N){
            if(r3<r4)
                res+=(r4-r3)*S;
            else res-=(r3-r4)*T;
        }
       // cout<<res<<endl;
        for(int i=u1;i<=u2;i++)
            koliko[i]+=povecaj;
        r2+=povecaj;
        r3+=povecaj;
        if(u1!=1){
            if(r1<r2)
                res-=(r2-r1)*S;
            else res+=(r1-r2)*T;
        }
        if(u2!=N){
            if(r3<r4)
                res-=(r4-r3)*S;
            else res+=(r3-r4)*T;
        }
      /*  for(int i=1;i<=N;i++)
            cout<<koliko[i]<<" ";
        cout<<endl;*/
        cout<<res<<endl;
    }
    return 0;
    }
    for(int i=1;i<=N;i++)
        koliko[i]=getll();
    for(int i=1;i<N;i++)
        if(koliko[i]<koliko[i+1])
            res-=S*abs(koliko[i]-koliko[i+1]);
        else res+=T*abs(koliko[i]-koliko[i+1]);
   // cout<<res<<endl;
    while(Q--){
        u1=getll();
        u2=getll();
        povecaj=getll();
        u1++;
        u2++;
        r1=nadji(u1-1+N);
        r2=nadji(u1+N);
        r3=nadji(u2+N);
        r4=nadji(u2+1+N);
        if(u1!=1){
            if(r1<r2)
                res+=(r2-r1)*S;
            else res-=(r1-r2)*T;
        }
        if(u2!=N){
            if(r3<r4)
                res+=(r4-r3)*S;
            else res-=(r3-r4)*T;
        }
       // cout<<res<<endl;
        dodaj(1,u1,u2,1,N);
        r2+=povecaj;
        r3+=povecaj;
        if(u1!=1){
            if(r1<r2)
                res-=(r2-r1)*S;
            else res+=(r1-r2)*T;
        }
        if(u2!=N){
            if(r3<r4)
                res-=(r4-r3)*S;
            else res+=(r3-r4)*T;
        }
      /*  for(int i=1;i<=N;i++)
            cout<<koliko[i]<<" ";
        cout<<endl;*/
        cout<<res<<endl;
    }
    return 0;
}

Compilation message

foehn_phenomena.cpp: In function 'long long int getll()':
foehn_phenomena.cpp:30:9: warning: value computed is not used [-Wunused-value]
   30 |         *pos++;
      |         ^~~~~~
foehn_phenomena.cpp:32:9: warning: value computed is not used [-Wunused-value]
   32 |         *pos++;
      |         ^~~~~~
foehn_phenomena.cpp:37:5: warning: value computed is not used [-Wunused-value]
   37 |     *pos++;
      |     ^~~~~~
foehn_phenomena.cpp:40:9: warning: value computed is not used [-Wunused-value]
   40 |         *pos++;
      |         ^~~~~~
foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:45:10: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   45 |     fread(buffer,1,LIMIT,stdin);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 384 KB Output is correct
2 Correct 7 ms 384 KB Output is correct
3 Correct 7 ms 384 KB Output is correct
4 Correct 7 ms 416 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 7 ms 384 KB Output is correct
7 Correct 8 ms 384 KB Output is correct
8 Correct 6 ms 384 KB Output is correct
9 Correct 7 ms 384 KB Output is correct
10 Correct 6 ms 384 KB Output is correct
11 Correct 6 ms 384 KB Output is correct
12 Correct 7 ms 384 KB Output is correct
13 Correct 9 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 6 ms 384 KB Output is correct
16 Correct 6 ms 384 KB Output is correct
17 Correct 9 ms 384 KB Output is correct
18 Correct 10 ms 384 KB Output is correct
19 Correct 0 ms 384 KB Output is correct
20 Correct 0 ms 384 KB Output is correct
21 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 513 ms 8900 KB Output is correct
2 Correct 509 ms 9592 KB Output is correct
3 Correct 503 ms 10360 KB Output is correct
4 Correct 511 ms 9720 KB Output is correct
5 Correct 506 ms 11000 KB Output is correct
6 Correct 538 ms 9872 KB Output is correct
7 Correct 534 ms 9848 KB Output is correct
8 Correct 514 ms 10744 KB Output is correct
9 Correct 528 ms 11068 KB Output is correct
10 Correct 499 ms 9636 KB Output is correct
11 Correct 513 ms 9720 KB Output is correct
12 Correct 517 ms 10420 KB Output is correct
13 Correct 520 ms 10872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 384 KB Output is correct
2 Correct 7 ms 384 KB Output is correct
3 Correct 7 ms 384 KB Output is correct
4 Correct 7 ms 416 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 7 ms 384 KB Output is correct
7 Correct 8 ms 384 KB Output is correct
8 Correct 6 ms 384 KB Output is correct
9 Correct 7 ms 384 KB Output is correct
10 Correct 6 ms 384 KB Output is correct
11 Correct 6 ms 384 KB Output is correct
12 Correct 7 ms 384 KB Output is correct
13 Correct 9 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 6 ms 384 KB Output is correct
16 Correct 6 ms 384 KB Output is correct
17 Correct 9 ms 384 KB Output is correct
18 Correct 10 ms 384 KB Output is correct
19 Correct 0 ms 384 KB Output is correct
20 Correct 0 ms 384 KB Output is correct
21 Correct 0 ms 384 KB Output is correct
22 Correct 513 ms 8900 KB Output is correct
23 Correct 509 ms 9592 KB Output is correct
24 Correct 503 ms 10360 KB Output is correct
25 Correct 511 ms 9720 KB Output is correct
26 Correct 506 ms 11000 KB Output is correct
27 Correct 538 ms 9872 KB Output is correct
28 Correct 534 ms 9848 KB Output is correct
29 Correct 514 ms 10744 KB Output is correct
30 Correct 528 ms 11068 KB Output is correct
31 Correct 499 ms 9636 KB Output is correct
32 Correct 513 ms 9720 KB Output is correct
33 Correct 517 ms 10420 KB Output is correct
34 Correct 520 ms 10872 KB Output is correct
35 Correct 500 ms 14556 KB Output is correct
36 Incorrect 518 ms 15736 KB Output isn't correct
37 Halted 0 ms 0 KB -