Submission #1339392

#TimeUsernameProblemLanguageResultExecution timeMemory
1339392anudari_t학생 (COCI14_studentsko)C++20
0 / 100
7 ms348 KiB
#include <bits/stdc++.h>

using namespace std;

int main () {
	int n, k;
	cin >> n >> k;
	vector<array<int, 2>> arr(n);
	for (int i = 0; i < n; i++) {
		cin >> arr[i][0];
		arr[i][1] = i;
	}
	sort(arr.begin(), arr.end());
	vector<int> a[n / k];
	for (int i = 0; i < n; i++) {
		a[i / k].push_back(arr[i][1]);
		arr[i][0] = i / k;
	}
	for (int i = 0; i < n / k; i++) {
		sort(a[i].rbegin(), a[i].rend());
		// for (int j : a[i])
		// 	cout << j << " ";
		// cout << endl;
	}
	// cout << endl;
	int ans = n;
	for (int i = 0; i < n; i++) {
		int cnt = i;
		int cur = n - 1;
		int w = k;

		int mn_j = (i - 1) / k;
		int ll = (i - 1) % k;
		for (int j = n / k - 1; j > mn_j; j--) {
			for (int l = 0; l < k; l++) {
				if (cur == a[j][l]) {
					w--;
					cur--;
				}
				else {
					cnt += w;
					w = k;
					break;
				}
			}
		}
		w = k - ll;
		for (int l = 0; l < ll; l++) {
			if (cur == a[mn_j][l]) {
				w--;
				cur--;
			}
			else {
				cnt += w;
				break;
			}
		}
		// cout << cnt << "\n";
		ans = min(ans, cnt);
	}
	cout << ans << endl;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...