Submission #1226050

#TimeUsernameProblemLanguageResultExecution timeMemory
1226050SpyrosAlivPainting Walls (APIO20_paint)C++20
0 / 100
0 ms324 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; int n, m, k; vector<int> c; vector<set<int>> cov; const int INF = 1e9; vector<int> likedBy; bool check(int idx) { int start = likedBy[c[idx]]; if (start == -1) return false; bool flag = true; for (int j = 0; j < m; j++) { int i = idx + j; int curr = (start + j) % m; if (cov[curr].find(c[i]) != cov[curr].end()) continue; else { flag = false; break; } } if (flag) return true; return false; } int minimumInstructions(int N, int M, int K, vector<int> C, vector<int> A, vector<vector<int>> B) { n = N; m = M; k = K; c = C; cov.resize(m); likedBy.assign(k, -1); for (int i = 1; i < m; i++) { for (int j = 0; j < A[i]; j++) { likedBy[B[i][0]] = i; } } for (int i = 0; i < n; i++) { if (likedBy[c[i]] == -1) return -1; c[i] = likedBy[c[i]]; } int cnt = 1; int ans = 0; for (int i = 1; i < n; i++) { if ((c[i-1] + 1) % m != c[i]) { if (cnt < m) return -1; ans += cnt / m + ((cnt % m) > 0); cnt = 1; } else cnt++; } if (cnt < m) return -1; ans += cnt / m + ((cnt % m) > 0); 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...