# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
409820 | jhwest2 | 벽 칠하기 (APIO20_paint) | C++14 | 433 ms | 255336 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
}
컴파일 시 표준 에러 (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... |