Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <complex>
- #include <cstdlib>
- #include <ctime>
- #include <deque>
- #include <iostream>
- #include <map>
- #include <math.h>
- #include <queue>
- #include <random>
- #include <set>
- #include <string>
- #include <unordered_map>
- #include <unordered_set>
- #include <vector>
- using namespace std;
- typedef long long ll;
- typedef double ld;
- typedef complex<ld> cp;
- const ld eps = 1e-9;
- std::random_device randD;
- std::mt19937 gen(randD());
- const ld pi = 3.14159265359;
- vector<int> v;
- int pr[100010];
- int suf[100010];
- int s[100010];
- int main() {
- #ifdef SYSTEM
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int n, k, a;
- cin >> n >> k;
- for (int i = 0; i < n; ++i) {
- cin >> a;
- v.push_back(a);
- }
- int minn = 1e9, maxx = -1e9;
- for (int i = 0; i < n; ++i) {
- minn = min(minn, v[i]);
- maxx = max(maxx, v[i]);
- }
- if (k >= 3) {
- cout << maxx;
- return 0;
- }
- if (k == 1) {
- cout << minn;
- return 0;
- }
- pr[0] = 1e9;
- suf[n] = 1e9;
- for (int i = 1; i <= n; ++i) {
- pr[i] = min(pr[i - 1], v[i - 1]);
- }
- s[0] = 0;
- for (int i = 1; i <= n; ++i) {
- s[i] = s[i - 1] + v[i];
- }
- // s[j + 1] - s[i] сумма с i по j включительно
- for (int i = n - 1; i >= 0; --i) {
- suf[i] = min(suf[i + 1], v[i]);
- }
- int ans = -1e9;
- for (int i = 0; i < n - 1; ++i) {
- ans = max(ans, max(pr[i + 1], suf[i + 1]));
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment