제출 #1018046

#제출 시각아이디문제언어결과실행 시간메모리
1018046vjudge1Foehn Phenomena (JOI17_foehn_phenomena)C++17
100 / 100
73 ms13136 KiB
#include <bits/stdc++.h>
//~ #include <ext/pb_ds/assoc_container.hpp>
//~ #include <ext/pb_ds/tree_policy.hpp>
using namespace std; //using namespace __gnu_pbds; using namespace chrono;
#define ff first
#define ss second
#define pb push_back
#define gan(x) x.begin(),x.end()
#define rgan(x) x.rbegin(),x.rend()
#define ins insert
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update
typedef long long ll;typedef vector<ll> vecs;typedef vector<vector<ll>> matrix;
const int mod = 1e9+7; const char nl = '\n';
const ll N = 1e5+5;
const ll inf = 1e18;

void ShikiMoril() {
 ll n, q, s, t; cin >> n >> q >> s >> t ;
 vecs vec (n + 1 ) ;
 forn ( i , n + 1 ) cin >> vec [ i ];
 vecs v1 ( n + 1 ) ;
 ll ans = 0 ;
 forn ( i ,n + 1 )  { if ( i == 0 ) continue ;
	 v1 [ i ] =vec [ i ] - vec [ i - 1 ] ;
	 if ( v1 [ i ] > 0 )  ans -= v1 [ i ] * s;
	 else ans -= v1 [ i ] * t ;
	 
 }
   while ( q -- ) {
	   ll l ,r , x ; cin >> l >> r >> x ;
	   if ( v1 [ l ]  > 0 )  ans += v1 [ l ] * s ;
	   else ans += v1 [ l ] * t ;
	   
	   if ( r + 1 <= n ) {  if ( v1 [ r + 1 ] > 0 ) ans += v1 [ r + 1 ] * s ;
	   else ans += v1 [ r + 1 ] * t ; } 
	   v1 [ l ] += x ;
	   if ( r + 1 <= n ) v1 [ r + 1 ] = v1 [ r +1  ] - x ;
	   if ( v1 [ l ] > 0  ) ans -= v1 [ l ] * s ;
	   else ans -= v1 [ l ] * t ;
	   
	   if ( r + 1 <= n ){  if ( v1 [ r + 1 ] > 0 ) ans -= v1 [ r + 1 ] * s ;
	   else ans -= v1 [ r + 1 ] * t ; } 
	   cout << ans << nl;
   }
   
}
signed main() {
    ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    ll t = 1;  //cin >> t;
    while (t--) {
        ShikiMoril();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...