제출 #1272795

#제출 시각아이디문제언어결과실행 시간메모리
1272795makskusFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
75 ms7160 KiB
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <map> #include <set> #include <queue> #include <stack> #include <deque> #include <cmath> #include <climits> #include <cstring> #include <iomanip> #include <numeric> #include <functional> #include <bitset> #include <unordered_map> #include <unordered_set> #include <chrono> #include <random> using namespace std; typedef long long ll; typedef unsigned long long ull; #define st first #define nd second #define pb push_back const int inf = 1e9; const ll infl = 1e18; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, q, s, t; cin >> n >> q >> s >> t; vector<ll> tab(n + 1); vector<ll> diff(n); // diff[i] = tab[i+1] - tab[i] ll wynik = 0; for (int i = 0; i <= n; i++) { cin >> tab[i]; } for (int i = 0; i < n; i++) { diff[i] = tab[i + 1] - tab[i]; if (diff[i] > 0) { wynik -= s * diff[i]; } else { wynik -= t * diff[i]; } } for (int i = 0; i < q; i++) { int a, b; ll v; cin >> a >> b >> v; ll poc = diff[a - 1]; diff[a - 1] += v; ll new_a = diff[a - 1]; if (poc > 0) { wynik += s * poc; } else { wynik += t * poc; } if (new_a > 0) { wynik -= s * new_a; } else { wynik -= t * new_a; } if (b < n) { ll kon = diff[b]; diff[b] -= v; ll new_b = diff[b]; if (kon > 0) { wynik += s * kon; } else { wynik += t * kon; } if (new_b > 0) { wynik -= s * new_b; } else { wynik -= t * new_b; } } cout << wynik << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...