Submission #730641

#TimeUsernameProblemLanguageResultExecution timeMemory
730641t6twotwoPainting Walls (APIO20_paint)C++17
0 / 100
1 ms212 KiB
#include "paint.h"
#include <bits/stdc++.h>
using namespace std;
constexpr int inf = 1E6;
int minimumInstructions(int N, int M, int K, vector<int> C, vector<int> A, vector<vector<int>> B) {
    vector<set<int>> D(M);
    vector<vector<int>> f(K);
    for (int i = 0; i < M; i++) {
        for (int x : B[i]) {
            f[x].push_back(i);
            D[i].insert(x);
        }
    }
    vector<int> dp(N + 1, inf);
    dp[0] = 0;
    for (int i = M - 1; i < N; i++) {
        auto mn = inf;
        for (int j = 0; j < M; j++) {
            mn = min(mn, dp[i - j]);
        }
        for (int x : f[C[i]]) {
            bool ok = 1;
            for (int j = 1; j < M; j++) {
                if (!D[(x + j) % M].count(C[i - M + j])) {
                    ok = 0;
                    break;
                }
            }
            if (ok) {
                dp[i + 1] = mn + 1;
                break;
            }
        }
    }
    auto ans = dp[N];
    if (ans == inf) {
        ans = -1;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...