Submission #897556

#TimeUsernameProblemLanguageResultExecution timeMemory
897556bleahbleahSecurity Guard (JOI23_guard)C++17
12 / 100
18 ms4536 KiB
#include <bits/stdc++.h> #define all(x) (x).begin(),(x).end() using namespace std; using ll = long long; using ld = long double; //#define int ll #define sz(x) ((int)(x).size()) using pii = pair<int,int>; using tii = tuple<int,int,int>; vector<int> S; signed main() { cin.tie(0) -> sync_with_stdio(0); int n, m, q; cin >> n >> m >> q; S.resize(n); for(auto &x : S) cin >> x; ll sum = 0; for(int i = 0; i < n - 1; i++) sum += (S[i] == S[i + 1]) * S[i]; S.erase(unique(all(S)), end(S)); n = sz(S); vector<int> mx; if(sz(S) > 1 && S[0] > S[1]) mx.emplace_back(S[0]); for(int i = 1; i < n - 1; i++) { if(S[i] > S[i - 1] && S[i] > S[i + 1]) mx.emplace_back(S[i]); if(S[i] < S[i - 1] && S[i] < S[i + 1]) mx.emplace_back(S[i]); } if(sz(S) > 1 && rbegin(S)[0] > rbegin(S)[1]) mx.emplace_back(S.back()); for(int i = 0; i < n - 1; i++) sum += max(S[i], S[i + 1]); for(int i = 0; i + 2 < sz(mx); i += 2) sum -= min(mx[i], mx[i + 2]) - mx[i + 1]; cout << sum << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...