이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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) {
vector<vector<int> > colors(K);
for(int i = 0; i < M; i++)
for(int& a : B[i]) colors[a].push_back(i);
map<int,int> last;
vector<bool> start(N, false);
for(int i = 0; i < N; i++){
map<int,int> uj;
for(int& a : colors[C[i]]){
if(last.count((a+M-1)%M) > 0) uj[a] = 1 + last[(a+M-1)%M];
else uj[a] = 1;
}
for(auto it = uj.begin(); it != uj.end(); it++){
if(it->second >= M) start[i-M+1] = true;
}
last = uj;
}
vector<int> best(N, -1e9);
for(int i = 0; i < N; i++)
best[i] = max((i > 0 ? best[i-1] : -1e9), (start[i] ? i : -1e9));
int poz = 0, ans = 0;
while(poz < N){
if(poz - best[poz] >= M) return -1;
poz = best[poz]+M, ans++;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |