제출 #1335496

#제출 시각아이디문제언어결과실행 시간메모리
1335496hyyh벽 칠하기 (APIO20_paint)C++20
28 / 100
41 ms9000 KiB
#include "paint.h"

using namespace std;

int const INF = 1e9+10;

int const NMAX = 210;

#include <vector>
#include <map>
#include <bitset>
#include <iostream>

int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) {
  map<int,bitset<NMAX>> cmp;
  for(int i{};i < M;i++){
    for(auto k:B[i]){
      cmp[k][i] = 1;
    }
  }
  bitset<NMAX> cur;
  bitset<510> bs(0);
  for(int i{};i <= N-M;i++){
    cur.set();
    for(int j{};j < M;j++){
      cur &= cmp[C[i+j]];
      cur <<= 1;
      if(cur[M]) cur[0] = 1;
      if(cur == 0) break;
    }
    if(cur != 0) bs[i] = 1;
  }
  int end = 0;
  int last = 0;
  int cnt = 0;
  for(int i{};i <= N-M;i++){
    if(!bs[i]) continue;
    if(i > end){
      if(i > last) return -1;
      else end = last,cnt++;
    }
    last = i+M;
  }
  if(end < N){
    if(last < N) return -1;
    else cnt++;
  }
  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...