Submission #1214171


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <cmath>
#include <functional>
#include <chrono>
#include <time.h>
using namespace std;

int main()
{
	int n, k; cin >> n >> k;
	vector<int>a(n);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}

	long long ans = 0;

	vector<int>see(n);
	int minH = a[0];
	int cnt = 1;
	for (int i = 0; i < n; i++){
		if (minH < a[i]) {
			minH = a[i];
			cnt++;
		}
		see[i] = minH;
	}

	while (cnt > k) {
		int index = 0;
		vector<pair<int, int>>b;
		for (int i = 0; i < n- 1; i++) {
			if (see[i] < see[i + 1]) {
				b.push_back(make_pair(see[i + 1] - see[i], index));
				index = i + 1;
			}
		}
		sort(b.begin(), b.end());
		a[b[0].second] += b[0].first;
		ans += b[0].first;

		int minH = a[0];
		cnt = 1;
		for (int i = 0; i < n; i++) {
			if (minH < a[i]) {
				minH = a[i];
				cnt++;
			}
			see[i] = minH;
		}
		cerr << cnt << endl;
	}

	while (cnt < k) {
		vector<pair<int, int>>b;
		vector<int>bias(n);
		for (int i = n - 1; i > 0; i--) {
			if (i < n - 1)bias[i] = bias[i + 1];
			if (see[i] == see[i - 1]) {
				b.push_back(make_pair(see[i] + 1 + bias[i] + - a[i], n - i));
			}
			else if(see[i]-see[i-1]==1){
				bias[i]++;
			}
			else bias[i] = 0;
		}
		sort(b.begin(), b.end());
		a[n-b[0].second] += b[0].first - bias[n - b[0].second];
		ans += b[0].first - bias[n - b[0].second];

		int minH = a[0];
		cnt = 1;
		for (int i = 0; i < n; i++) {
			if (minH < a[i]) {
				minH = a[i];
				cnt++;
			}
			see[i] = minH;
		}
	}

	cout << ans << endl;

    return 0;
}

Submission Info

Submission Time
Task B - Buildings are Colorful!
User kurenai3110
Language C++14 (GCC 5.4.1)
Score 350
Code Size 1711 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 120 / 120 90 / 90 140 / 140
Status
AC × 2
AC × 2
AC × 3
AC × 9
Set Name Test Cases
Sample sub0_in1.txt, sub0_in2.txt
Subtask1 sub1_in1.txt, sub1_in2.txt
Subtask2 sub2_in1.txt, sub2_in2.txt, sub2_in3.txt
Subtask3 sub0_in1.txt, sub0_in2.txt, sub1_in1.txt, sub1_in2.txt, sub2_in1.txt, sub2_in2.txt, sub2_in3.txt, sub3_in1.txt, sub3_in2.txt
Case Name Status Exec Time Memory
sub0_in1.txt AC 1 ms 256 KB
sub0_in2.txt AC 1 ms 256 KB
sub1_in1.txt AC 1 ms 256 KB
sub1_in2.txt AC 1 ms 256 KB
sub2_in1.txt AC 1 ms 256 KB
sub2_in2.txt AC 1 ms 256 KB
sub2_in3.txt AC 1 ms 256 KB
sub3_in1.txt AC 1 ms 256 KB
sub3_in2.txt AC 1 ms 256 KB