Submission #1219188

#TimeUsernameProblemLanguageResultExecution timeMemory
1219188Mans21Painting Walls (APIO20_paint)C++20
28 / 100
1596 ms6724 KiB
#include "paint.h"
#include <bits/stdc++.h>

using namespace std;

const int maxn = 100'000 + 12;

bool is[maxn];

int minimumInstructions(
    int n, int m, int k, vector<int> c, vector<int> A, vector<vector<int>> B) {

    for(int i = 0; i < m; i++) {
        sort(B[i].begin(), B[i].end());
    }

    auto check = [&](int i, int x) -> bool {
        auto it = lower_bound(B[i].begin(), B[i].end(), x);
        return it != B[i].end() && *it == x;
    };

    for(int y = 0; y <= n - m; y++) {
        for(int x = 0; x < m && !is[y]; x++) {
            bool fg = true;
            for(int l = 0; l < m && fg; l++) {
                fg &= check((x + l) % m, c[y + l]);
            }
            is[y] |= fg;
        }
    }

    int ans = 0, last = -1e9, cur = -1e9;
    for(int i = 0; i < n; i++) {
        if(is[i]) last = i;
        if(i - cur >= m) {
            if(i - last >= m) {
                return -1;
            }
            cur = last;
            ans++;
        }
    }
    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...