#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 1e5 + 2;
ll lo[N], hi[N];
int main() {
ll n, m, r, x, y, lo1, hi1, cnt, s, i, j, ans, t;
cin >> n >> m;
ll a[n + 2];
pair < ll, ll > b[n + 2];
vector < ll > v;
vector < ll > ind;
for (i = 1; i <= n; i ++) {
cin >> a[i];
ind.push_back(i);
v.push_back(a[i]);
b[i] = {a[i], i};
}
sort ( b + 1, b + n + 1);
// reverse(b + 1, b + n + 1);
for (i = 1; i <= n; i ++) {
s = (i - 1) / m;
s = s * m;
lo[b[i].second] = s + 1;
hi[b[i].second] = s + m;
}
ans = 0;
for (i = 1; i <= n/m; i++) {
// for (j = 0; j < v.size(); j ++) cout << v[j] << " ";
// cout << "\n";
// for (j = 0; j < v.size(); j ++) cout << ind[j] << " ";
// cout << "\n";
lo1 = (i - 1) * m + 1;
hi1 = i * m;
ll used[5002] = {0};
for (j = 0; j < v.size(); j ++) {
if (lo[ind[j]] == lo1 ) {
if ( j >= m) ans ++;
used[j] = 1;
}
}
vector < ll > q;
vector < ll > ind1;
for (j = 0; j < v.size(); j ++) {
if ( used[j] == 0) {
q.push_back(v[j]);
ind1.push_back(ind[j]);
}
}
swap(q, v);
swap(ind, ind1);
// cout << ans << endl;
}
cout << ans<< endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |