Submission #493114

#TimeUsernameProblemLanguageResultExecution timeMemory
493114KoyingFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
104 ms7176 KiB
#pragma region #pragma optimize("O3") #include <bits/stdc++.h> #define Weakoying ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define int long long #define pii pair<int, int> #define vi vector<int> #define vii vector<pair<int, int>> #define pqueue priority_queue #define pb push_back #define F first #define S second #define max(a, b) (a > b ? a : b) #define min(a, b) (a < b ? a : b) #define cmax(a, b) a = (a > b ? a : b) #define cmin(a, b) a = (a < b ? a : b) #define put(x) cout << x << endl; #define putarr(x) for(int i = 0; i < sizeof(x); i++) cout << x[i] << (" \n")[i == sizeof(x) - 1]; #define stop system("pause"); #define MEM(x, n) memset(x, n, sizeof(x)); #define lowbit(x) x &(-x) #if !LOCAL #define endl "\n" #endif const int INF = 0x3f3f3f3f; const int P = 1e9+7; using namespace std; #pragma endregion /******************************************************************************/ #define MAXN 200005 #define MAXM 1000005 int n, q, s, t; int x[MAXN], pre[MAXN]; int f(int i) { int rtn = 0; if(i > 0) rtn -= i * s; else rtn -= i * t; return rtn; } void sol() { cin >> n >> q >> s >> t; for(int i = 0; i <= n; i++) { cin >> x[i]; if(i) pre[i] = x[i] - x[i - 1]; } int ans = 0; for(int i = 1; i <= n; i++) { ans += f(pre[i]); } // cout << ans << endl; int l, r, v; while(q--) { cin >> l >> r >> v; int tmp = (v > 0 ? 1 : -1); if(pre[l] > 0) { int after = pre[l] + v; if(after < 0) { ans -= f(pre[l]); ans += f(after); } else { ans -= f(pre[l]); ans += f(after); } pre[l] = after; } else // < 0 { int after = pre[l] + v; if(after > 0) { ans -= f(pre[l]); ans += tmp * f(after); } else { ans -= f(pre[l]); ans += f(after); } pre[l] = after; } // cout << ans << " "; if(r != n) { if(pre[r + 1] > 0) { int after = pre[r + 1] - v; if(after < 0) { ans -= f(pre[r + 1]); ans += f(after); } else { ans -= f(pre[r + 1]); ans += f(after); } pre[r + 1] = after; } else { int after = pre[r + 1] - v; if(after > 0) { ans -= f(pre[r + 1]); ans += f(after); } else { ans -= f(pre[r + 1]); ans += f(after); } pre[r + 1] = after; } } tmp = -tmp; cout << ans << endl; // for(int i = 1; i <= n; i++) // cout << pre[i] << " "; // cout << endl; } } signed main() { Weakoying; int t = 1; //while (cin >> t) { while (t--) { sol(); } } return 0; }

Compilation message (stderr)

foehn_phenomena.cpp:1: warning: ignoring '#pragma region ' [-Wunknown-pragmas]
    1 | #pragma region
      | 
foehn_phenomena.cpp:2: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    2 | #pragma optimize("O3")
      | 
foehn_phenomena.cpp:29: warning: ignoring '#pragma endregion ' [-Wunknown-pragmas]
   29 | #pragma endregion
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...