Submission #1131507

#TimeUsernameProblemLanguageResultExecution timeMemory
1131507Champ_Naman벽 칠하기 (APIO20_paint)C++20
12 / 100
42 ms7264 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=1; k <= m-cnt; k++){
            if(pre[c[i-k]] != (j-k+m) % m) 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...