제출 #1264674

#제출 시각아이디문제언어결과실행 시간메모리
1264674Noname_1900Foehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
62 ms7244 KiB
#include<bits/stdc++.h>
using namespace std;
const int NMAX = 200000+1;
int N, nbJ, changAltPlus, changAltMoins;
#define int long long
//int temp[NMAX];

struct altitude {
    int val;
    int changTemp()
    {
        int dif = val;
        if(dif > 0) return abs(dif)*changAltPlus;
        else return abs(dif) * changAltMoins;
    }
};
altitude ecart[NMAX];
int alt[NMAX];
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> N >> nbJ >> changAltPlus >> changAltMoins;
    changAltPlus = -changAltPlus;
    for(int i = 0; i <= N; i++) cin >> alt[i];
    for(int i = 0; i < N; i++)  ecart[i].val = alt[i+1]-alt[i];
    /*
    for(int i = 0; i <= N; i++)
    {
        cout << i << " : " << alt[i] << " " << ecart[i].val << " : " << ecart[i].changTemp() << endl;;
    }/** */
    
    int sommeTemp = 0;
    for(int i = 0; i < N; i++)
    {
       // cout << ecart[i].val << endl;
       // temp[i] = ecart[i].changTemp();
        sommeTemp += ecart[i].changTemp();
        //cout << sommeTemp << " ";
    }
    //cout << "\n";
   // for(int i = 0; i < N; i++)  cout << ecart[i].val << " ";
  //  cout << endl;
    //cout << sommeTemp << endl;
    for(int iJ = 0; iJ < nbJ; iJ++)
    {
        int deb, fin, chang;
        cin >> deb >> fin >> chang;
        fin++;
        sommeTemp -= ecart[deb-1].changTemp();
        ecart[deb-1].val += chang;
        sommeTemp += ecart[deb-1].changTemp();
        if(fin -1 < N)
        {
            sommeTemp -= ecart[fin-1].changTemp();
            ecart[fin-1].val -= chang;
            sommeTemp += ecart[fin-1].changTemp();
        }
        
        
        
       // for(int i = 0; i < N; i++)  cout << ecart[i].val << " ";
       // cout << "." << "\n";
        cout << sommeTemp << "\n";
    }

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...