Submission #567356

#TimeUsernameProblemLanguageResultExecution timeMemory
567356StickfishPainting Walls (APIO20_paint)C++17
51 / 100
1566 ms10852 KiB
#include "paint.h"
#include <vector>
#include <bitset>
using namespace std;

const int MAXN = 100001;
const int MAXM = 208;
bitset<MAXM> rgoodcl[MAXN];

bool get_good_seg(int n, int m, int k, vector<int>& cl, vector<vector<int>>& goodcl, int l) {
    if (l > n - m)
        return false;
    for (int md = 0; md < m; ++md) {
        bool isok = true;
        for (int i = 0; i < m && isok; ++i) {
            isok &= rgoodcl[cl[i + l]][(md + i) % m];
        }
        if (isok) {
            return true;
        }
    }
    return false;
}

int minimumInstructions(int n, int m, int k, vector<int> cl, vector<int> a, vector<vector<int>> goodcl) {
    for (int i = 0; i < m; ++i) {
        for (auto ccl : goodcl[i])
            rgoodcl[ccl][i] = 1;
    }
    int endcvr = 0;
    int maxcvr = 0;
    int ans = 0;
    for (int i = 0; i < n; ++i) {
        if (get_good_seg(n, m, k, cl, goodcl, i))
            maxcvr = i + m;
        if (i >= endcvr) {
            endcvr = maxcvr;
            ++ans;
        }
        if (i >= endcvr)
            return -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...