///MEMENTO MEMO, MEMENTO LONG LONG #include <bits/stdc++.h> #define DEBUG if(0) #define COUT cout << "\e[36m" #define ENDL "\e[39m" << endl #define VAR(v) " [\e[32m" << #v << "\e[36m=\e[91m" << v << "\e[36m] " using namespace std; typedef long long LL; int n; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i) { cin >> nums[i]; } LL poss = 1; int left_out = 0, right_out = 0; for (int cut = 1; cut <= n - 1; ++cut) { int min_preserve = (n + (cut + 1)) / 2; while (left_out < cut && nums[left_out] < min_preserve) { left_out++; } while (right_out < cut && nums[n - 1 - right_out] < min_preserve) { right_out++; } DEBUG COUT << VAR(cut) << max(0, left_out + right_out - cut + 1) << VAR(left_out) << VAR(right_out) << VAR(min_preserve) << ENDL; poss += max(0, left_out + right_out - cut + 1); } cout << n+1+n << " " << poss << "\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ///MEMENTO MEMO, MEMENTO LONG LONG #include <bits/stdc++.h> #define DEBUG if(0) #define COUT cout << "\e[36m" #define ENDL "\e[39m" << endl #define VAR(v) " [\e[32m" << #v << "\e[36m=\e[91m" << v << "\e[36m] " using namespace std; typedef long long LL; int n; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i) { cin >> nums[i]; } LL poss = 1; int left_out = 0, right_out = 0; for (int cut = 1; cut <= n - 1; ++cut) { int min_preserve = (n + (cut + 1)) / 2; while (left_out < cut && nums[left_out] < min_preserve) { left_out++; } while (right_out < cut && nums[n - 1 - right_out] < min_preserve) { right_out++; } DEBUG COUT << VAR(cut) << max(0, left_out + right_out - cut + 1) << VAR(left_out) << VAR(right_out) << VAR(min_preserve) << ENDL; poss += max(0, left_out + right_out - cut + 1); } cout << n+1+n << " " << poss << "\n"; } |