| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 409820 | jhwest2 | Painting Walls (APIO20_paint) | C++14 | 433 ms | 255336 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "paint.h"
#include <bits/stdc++.h>
#define va first
#define vb second
using namespace std;
typedef long long lint;
typedef pair<int, int> pint;
const int M = 1e5 + 10;
const int INF = 1e9;
int n, m, k, Chk[M];
vector<int> Dp[M], D[M];
priority_queue<int, vector<int>, greater<int>> Q;
int minimumInstructions(int N, int M, int K, vector<int> C, vector<int> A, vector<vector<int>> B) {
	n = N; m = M; k = K;
	for (int i = 0; i < m; i++) {
		for (int x : B[i]) D[x].push_back(i);
	}
	Dp[0].resize(D[C[0]].size(), 0);
	if (m == 1 && !Dp[0].empty()) Q.push(0);
	for (int i = 1; i < n; i++) {
		vector<int> &V = D[C[i]];
		vector<int> &W = D[C[i - 1]];
		if (i >= 2) Dp[i - 2].clear();
		Dp[i].resize(V.size(), 0);
		if (W.empty()) continue;
		int k = 0, f = 0;
		for (int j = 0; j < V.size(); j++) {
			if (V[j] == 0) {
				if (W.back() == m - 1) Dp[i][j] = Dp[i - 1].back() + 1;
			}
			else {
				for (; k < W.size(); k++) {
					if (W[k] >= V[j] - 1) break;
				}
				if (k == W.size() || W[k] != V[j] - 1) continue;
				Dp[i][j] = Dp[i - 1][k] + 1;
			}
			if (!f && Dp[i][j] >= m - 1) {
				Q.push(i - m + 1); f = 1;
			}
		}
	}
	if (Q.empty() || Q.top() != 0) return -1;
	int ret = 0;
	while (!Q.empty()) {
		int x = Q.top(); Q.pop(); ++ret;
		while (!Q.empty()) {
			int t = Q.top(); Q.pop();
			if (Q.empty() || Q.top() > x + m) {
				Q.push(t); break;
			}
		}
		if (Q.empty()) {
			if (x == n - m) break;
			return -1;
		}
		if (Q.top() > x + m) return -1;
	}
	return ret;
}
Compilation message (stderr)
| # | 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... | ||||
