# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1244989 | chinesegenius69420 | Paint By Numbers (IOI16_paint) | C++20 | 0 ms | 328 KiB |
#include <bits/stdc++.h>
#include "paint.h"
#define dbg(x) cerr << #x << ": " << x << '\n';
using namespace std;
string solve_puzzle(string s, vector<int> c) {
int n = s.size();
int csi = c.size();
vector<int> arr(n, 0), pref(csi + 1, 0);
string ans;
ans.resize(n, '?');
for(int i = 0; i < csi; i++){
pref[i + 1] = pref[i] + c[i];
}
for(int z = 0; z < (int)c.size(); z++){
int a = n - (pref[csi] - pref[z + 1] + csi - z - 1);
for(int i = pref[z] + z; i <= a - c[z]; i++){
for(int j = 0; j < c[z]; j++){
arr[i + j]++;
}
}
int nose = a - c[z] - pref[z] - z + 1;
for(int i = pref[z] + z; i <= n; i++){
if(arr[i] == nose){
ans[i] = 'X';
}
}
if(z != c.size() - 1 and s.size() == pref[csi] + csi - 1){
ans[pref[z + 1] + z] = '_';
}
arr.resize(n, 0);
}
return ans;
}
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... |