/* Name: Author: xiaruize Date: */ #include<bits/stdc++.h> usingnamespace std; #define int long long #define ull unsigned long long #define ALL(a) (a).begin(), (a).end() #define pb push_back #define mk make_pair #define pii pair<int, int> #define pis pair<int, string> #define sec second #define fir first #define sz(a) int((a).size()) #define rep(i, x, y) for (int i = x; i <= y; i++) #define repp(i, x, y) for (int i = x; i >= y; i--) #define Yes cout << "Yes" << endl #define YES cout << "YES" << endl #define No cout << "No" << endl #define NO cout << "NO" << endl #define double long double constint INF = 0x3f3f3f3f; constint MOD = 1000000007; constint N = 4e5 + 10;
// bool st; int n, k; int a[N]; pii b[N]; int pos[N]; int mi = INF; bool f = false; // bool en;
signedmain() { // freopen(".in","r",stdin); // freopen(".out","w",stdout); // cerr<<(&en-&st)/1024.0/1024.0<<endl; cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; if (i > k) { b[i - k] = {a[i], i}; if (a[i] > mi) { f = true; } } else mi = min(mi, a[i]); } if (!f) { cout << "-1" << endl; return0; } sort(b + 1, b + n - k + 1); int res = INF; pos[n - k + 1] = INF; for (int i = n - k; i >= 1; i--) { pos[i] = pos[i + 1]; pos[i] = min(pos[i], b[i].sec); } for (int i = 1; i <= k; i++) { int l = 1, r = n - k + 1; while (l < r) { int mid = (l + r) >> 1; if (b[mid].fir > a[i]) r = mid; else l = mid + 1; } res = min(res, pos[r] - i); } cout << res << endl; return0; }
// Problem: C - Rotate and Play Game // Contest: AtCoder - Daiwa Securities Co. Ltd. Programming Contest 2022 Spring(AtCoder Regular Contest 138) // URL: https://atcoder.jp/contests/arc138/tasks/arc138_c // Memory Limit: 1024 MB // Time Limit: 2000 ms // // Powered by CP Editor (https://cpeditor.org)
/* Name: Author: xiaruize Date: */ #include<bits/stdc++.h> usingnamespace std; #define int long long #define ull unsigned long long #define ALL(a) (a).begin(), (a).end() #define pb push_back #define mk make_pair #define pii pair<int, int> #define pis pair<int, string> #define sec second #define fir first #define sz(a) int((a).size()) #define rep(i, x, y) for (int i = x; i <= y; i++) #define repp(i, x, y) for (int i = x; i >= y; i--) #define Yes cout << "Yes" << endl #define YES cout << "YES" << endl #define No cout << "No" << endl #define NO cout << "NO" << endl #define double long double constint INF = 0x3f3f3f3f; constint MOD = 1000000007; constint N = 2e5 + 10;
// bool st; int n; pii a[N]; int pos[N]; // bool en;
signedmain() { // freopen(".in","r",stdin); // freopen(".out","w",stdout); // cerr<<(&en-&st)/1024.0/1024.0<<endl; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].fir; a[i].sec = i; } sort(a + 1, a + n + 1);//排序取前n/2大 int res = 0; for (int i = n / 2 + 1; i <= n; i++) { pos[i - n / 2] = a[i].sec; res += a[i].fir; } sort(pos + 1, pos + n / 2 + 1); int ans = 0; int l = 0; for (int i = 1; i <= n / 2; i++)//查答案 { if ((pos[i] - ans) / 2 < i - l) { ans = pos[i]; l = i; } } cout << ans << ' ' << res << endl; return0; }