제출 #1197405

#제출 시각아이디문제언어결과실행 시간메모리
1197405adiyer벽 칠하기 (APIO20_paint)C++20
0 / 100
1598 ms153052 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e5 + 11;

int n, m;
int c[MAXN], dp[MAXN];

map < int, int > was[MAXN];

bool check(int s, int l){
    for(int i = s; i < s + m; i++){
        if(!was[i % m][c[l]]) return 0;
        l++;
    }
    return 1;
}

int minimumInstructions(int N, int M, int K, vector < int > C, vector < int > A, vector < vector < int > > B) {
    n = N, m = M;
    for(int i = 0; i < n; i++) c[i] = C[i], dp[i] = MAXN;
    for(int i = 0; i < M; i++)
        for(int x : B[i])
            was[i][x] = 1;
    for(int x = 0; x < m; x++){
        if(check(x, 0)){
            for(int i = 0; i < m; i++) dp[i] = 1;
            break;
        }
    }
    for(int i = m; i < n; i++){
        for(int x = 0; x < m; x++){
            if(check(x, i - m + 1)){
                dp[i] = min(dp[i], dp[i - m] + 1);
                break;
            }
        }
    }
    if(dp[n - 1] == MAXN) return -1;
    else return dp[n - 1]; 
}
#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...