Submission #395188

#TimeUsernameProblemLanguageResultExecution timeMemory
395188syl123456Painting Walls (APIO20_paint)C++17
12 / 100
58 ms13652 KiB
#include "paint.h"

#include <bits/stdc++.h>
using namespace std;
int minimumInstructions(
        int N, int M, int K, std::vector<int> C,
        std::vector<int> A, std::vector<std::vector<int>> B) {
    vector<vector<int>> mp(K);
    for (int i = 0; i < M; ++i) for (int j : B[i]) mp[j].push_back(i);
    int cnt = 0, ptr = 0;
    while (ptr < N) {
        if (mp[C[ptr]].empty()) return -1;
        int l = ptr, r = ptr;
        while (ptr - l < M - 1 && l > 0 && ptr - (l - 1) == (mp[C[ptr]].back() - mp[C[l - 1]].back() + (mp[C[ptr]].back() - mp[C[l - 1]].back() < 0 ? M : 0)))
            --l;
        while (r - ptr < M - 1 && r < N - 1 && r + 1 - ptr == (mp[C[r + 1]].back() - mp[C[ptr]].back() + (mp[C[r + 1]].back() - mp[C[ptr]].back() < 0 ? M : 0)))
            ++r;
        if (r - l + 1 < M) return -1;
        ++cnt, ptr = r + 1;
    }
    return cnt;
}
#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...