#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |