Submission #996473

#TimeUsernameProblemLanguageResultExecution timeMemory
996473Dan4LifePainting Walls (APIO20_paint)C++17
28 / 100
1511 ms19544 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; #define all(a) begin(a),end(a) #define sz(a) (int)a.size() #define pb push_back const int mxN = (int)2e5+10; int n, m, k; bool work[mxN]; vector<int> c, a; set<int> b[mxN]; bool check(int i){ for(int st = 0; st < m; st++){ int x = st, y = i, flag = 1; for(int i = 0; i < m and flag; i++){ if(!b[x].count(c[y])) flag = 0; x++; if(x==m) x=0; y++; if(y==n) 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; for(auto u : C) c.pb(u); for(auto u : A) a.pb(u); for(int i = 0; i < m; i++) for(auto u : B[i]) b[i].insert(u); memset(work,0,sizeof(work)); for(int i = 0; i <= n-m; i++) work[i] = check(i); if(!work[0] or !work[n-m]) return -1; int tot = 1; for(int i = 0; i < n-m;){ int j; for(j = i+m; j>=i; j--) if(work[j]) break; if(j==i) return -1; tot++; i = j; } return tot; }
#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...