# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1165672 | SmuggingSpun | Painting Walls (APIO20_paint) | C++20 | 1596 ms | 40288 KiB |
#include<bits/stdc++.h>
#include "paint.h"
using namespace std;
const int INF = 1e9;
template<class T>void minimize(T& a, T b){
if(a > b){
a = b;
}
}
int minimumInstructions(int n, int m, int k, vector<int>c, vector<int>a, vector<vector<int>>b){
bool is_sub1 = true;
auto pre_check = [&] (){
vector<int>cnt(k, 0);
for(int i = 0; i < m; i++){
for(int& j : b[i]){
if(cnt[j]++ == 1){
is_sub1 = false;
return;
}
}
}
};
pre_check();
if(is_sub1){
vector<int>to(k, -2);
for(int i = 0; i < m; i++){
for(int& j : b[i]){
to[j] = i;
}
}
int cnt = 1, ans = 0, pre = to[c[0]];
for(int i = 1; i < n; i++, cnt++){
if(cnt == m){
cnt = 0;
if((pre = to[c[i]]) == -2){
return -1;
}
ans++;
}
else if(to[c[i]] != (pre = (pre + 1) % m)){
return -1;
}
}
return ans + 1;
}
if(n <= 500 && m <= 200){
vector<vector<int>>p(k);
for(int i = 0; i < n; i++){
p[c[i]].emplace_back(i);
}
vector<vector<bool>>can(m, vector<bool>(n, false));
for(int i = 0; i < m; i++){
for(int& j : b[i]){
for(int& k : p[j]){
can[i][k] = true;
}
}
}
vector<bool>paint(n, false);
for(int i = 0; i + m <= n; i++){
for(int j = 0; j < m; j++){
bool flag = true;
for(int k = 0; k < m; k++){
if(!can[(j + k) % m][i + k]){
flag = false;
break;
}
}
if(flag){
paint[i] = true;
break;
}
}
}
vector<int>dp(n + 1, INF);
dp[n] = 0;
for(int i = n - 1; i > -1; dp[i--]++){
for(int j = min(i, n - m); j >= max(0, i - m + 1); j--){
if(paint[j]){
for(int k = i; k < j + m; k++){
minimize(dp[i], dp[k + 1]);
}
break;
}
}
}
return dp[0] >= INF ? -1 : dp[0];
}
}
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... |