| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1307114 | fafnir | Paint By Numbers (IOI16_paint) | C++20 | 1 ms | 352 KiB |
#include <bits/stdc++.h>
using namespace std;
#include "paint.h"
string solve_puzzle(string s, vector<int> c) {
int N = s.length(), K = c.size();
vector<int> L(K), R(K);
L[0] = 0;
for (int i = 1; i < K; i++) L[i] = L[i-1] + c[i-1] + 1;
R[K-1] = N - c[K-1];
for (int i = K-2; i >= 0; i--) R[i] = R[i+1] - c[i] - 1;
vector<bool> canX(N, false), canW(N, false);
for (int i = 0; i < N; i++) {
bool coveredByAll = false;
for (int j = 0; j < K; j++) {
if (i >= R[j] && i < L[j] + c[j]) coveredByAll = true;
}
if (!coveredByAll) canW[i] = true;
}
for (int j = 0; j < K; j++) {
for (int i = L[j]; i <= R[j] + c[j] - 1; i++) {
if (i >= L[j] && i < R[j] + c[j]) canX[i] = true;
}
}
vector<bool> mustX(N, false);
for (int j = 0; j < K; j++) {
for (int i = R[j]; i < L[j] + c[j]; i++) mustX[i] = true;
}
string res = "";
for (int i = 0; i < N; i++) {
if (mustX[i]) res += 'X';
else if (!canX[i]) res += '_';
else res += '?';
}
return res;
}
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... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
