Submission #1018046

#TimeUsernameProblemLanguageResultExecution timeMemory
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...