제출 #1298229

#제출 시각아이디문제언어결과실행 시간메모리
1298229Jawad_Akbar_JJ벽 칠하기 (APIO20_paint)C++20
100 / 100
130 ms13656 KiB
#include <iostream> #include <vector> #include <deque> using namespace std; const int N = 1<<17; int seen[N], dp[N], Mx[N]; vector<int> ind[N]; int minimumInstructions(int n, int m, int k, vector<int> c, vector<int> A, vector<vector<int>> B){ for (int i=0;i<m+m;i++){ for (int j : B[i % m]) ind[j].push_back(i); } deque<int> v = {n}; for (int j=n-1;j>=0;j--){ if (v.size() > 0 and v.front() - j > m) v.pop_front(); int mx = 0; for (int id : ind[c[j]]){ Mx[id] = 1; if (seen[id+1] == j + 1) Mx[id] = Mx[id+1] + 1; mx = max(mx, Mx[id]); seen[id] = j; } dp[j] = (mx >= m) ? dp[v.front()] + 1 : n + 1; while (v.size() and dp[v.back()] >= dp[j]) v.pop_back(); v.push_back(j); } return (dp[0] >= n + 1 ? -1 : dp[0]); }
#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...