제출 #1131506

#제출 시각아이디문제언어결과실행 시간메모리
1131506Champ_NamanPainting Walls (APIO20_paint)C++20
12 / 100
24 ms7324 KiB
#include "paint.h"
#include<bits/stdc++.h>
using namespace std;

int minimumInstructions(int n, int m, int k, vector<int> c, vector<int> a, vector<vector<int>> b){
   int pre[k];
   for(int i=0; i<k; i++) pre[i] = -1;

   for(int i=0; i<m; i++){
      for(int j=0; j<a[i]; j++){
         pre[b[i][j]] = i;
      }
   }

   int ans = 0;
   for(int i=0; i<n;){
      int mx = -1e9;
      for(int j=0; j<m; j++){
         if(pre[c[i]] != j) continue;

         int cnt = 0;
         while(i + cnt < n and cnt < m and pre[c[i + cnt]] == (j + cnt) % m){
            cnt++;
         }

         if(i - (m-cnt) < 0) continue;

         int tf = 1;
         for(int k=j-1, l=1; l <= m-cnt; k--, l++){
            k = (k+m) % m;
            if(pre[c[i-l]] != k) tf = 0;
         }
         
         if(tf) mx = max(mx, i+cnt);
      }

      if(mx == -1e9) return -1;
      i = mx;
      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...