Submission #1226482

#TimeUsernameProblemLanguageResultExecution timeMemory
1226482dzuizzPainting Walls (APIO20_paint)C++20
40 / 100
907 ms581836 KiB
#include <bits/stdc++.h>
#include "paint.h"
using namespace std;

constexpr int N=1e5,M=5e4,K=1e5;
int n,m,k,ans;
unordered_set<int> mp[K];
unordered_map<int,int> dp[N];
bool can[N];

int minimumInstructions(int _n,int _m,int _k,vector<int>c,std::vector<int>a,std::vector<std::vector<int>>b) {
  n=_n,m=_m,k=_k;

  for(int i=0;i<m;++i) for(int j=0;j<a[i];++j)
    mp[b[i][j]].insert(i);

  for(int i=n-1;i>=0;--i){
    for(auto&j:mp[c[i]]){
      dp[i][j]=(i==n-1?1:dp[i+1][(j+1)%m]+1);
      can[i]=can[i]||(dp[i][j]>=m);
    }
  }

  for(int i=0,p=-1,q=-1;i<n;++i){
    q=(can[i]?i+m-1:q);
    if(i>p) p=q,++ans;
    if(i>p) return -1;
  }
  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...