Submission #981102

#TimeUsernameProblemLanguageResultExecution timeMemory
981102AbitoPainting Walls (APIO20_paint)C++17
0 / 100
2 ms7260 KiB
#include "paint.h" #include <bits/stdc++.h> #define pb push_back #define ep insert using namespace std; const int NN=1e5+5; int n,m,k,p[NN],c[NN],dp[NN]; set<int> adj[NN]; vector<int> v[NN]; 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 (int i=1;i<=n;i++) c[i]=C[i-1]+1; for (int i=1;i<=m;i++){ for (auto u:B[i-1]) adj[i].ep(u+1),v[u+1].pb(i-1); } for (int i=1;i<n;i++){ if (v[c[i]].empty() || v[c[i+1]].empty()) p[i]=p[i-1]; else p[i]=p[i-1]+bool((v[c[i]][0]+1)%m==v[c[i+1]][0]); } multiset<int> s; for (int i=1;i<=n-m+1;i++) dp[i]=10*n; for (int i=1;i<=m;i++) s.ep(0); for (int i=n-m+1;i;i--){ bool ok=(p[i+m-2]-p[i-1]==m-1); if (ok) dp[i]=*s.begin()+1; s.ep(dp[i]); s.erase(s.find(dp[i+m])); } if (dp[1]>=10*n) return -1; return dp[1]; }
#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...