Submission #1175731

#TimeUsernameProblemLanguageResultExecution timeMemory
1175731MuhammetPainting Walls (APIO20_paint)C++20
51 / 100
714 ms589824 KiB
#include "bits/stdc++.h" #include "paint.h" // #include "grader.cpp" using namespace std; int minimumInstructions( int n, int m, int k, vector<int> c, vector<int> a, vector<vector<int>> b) { vector <vector <bool>> vis(m+1, vector <bool> (k+1, 0)); for(int i = 0; i < m; i++) { for(auto j : b[i]) { vis[i][j] = true; } } vector <vector <int>> d(n+2, vector <int> (m+2, 0)); for(int i = n-1; i >= 0; i--) { for(int j = 0; j < m; j++) { if(vis[j][c[i]] == true) d[i][j] = d[i+1][j+1] + 1; } } // for(int i = 0; i < n; i++) { // cout << i << '\n'; // for(int j = 0; j < m; j++) { // cout << j << ' ' << d[i][j] << "\n"; // } // } vector <bool> e(n+1, 0); for(int i = 0; i < n - m + 1; i++) { int x = i + m - 1, cnt = m-1; if(i + d[i][0] > x) e[i] = true; for(int j = i + 1; j <= x; j++) { if(j + d[j][0] > x and i + d[i][cnt] >= j) e[i] = true; cnt--; // cout << i << ' ' << cnt << ' ' << j << ' ' << 0 << " " << (j + d[j][0] > x and i + d[i][--cnt] >= j) << '\n'; } // cout << e[i] << ' '; } // cout << '\n'; if(!e[0]) return -1; int ans = 1, y = 0; while(y < n - m) { bool tr = 0; for(int i = y + m; i > y; i--) { if(e[i]) { tr = 1; y = i; break; } } if(!tr) return -1; 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...