Submission #1309624

#TimeUsernameProblemLanguageResultExecution timeMemory
1309624namhhPainting Walls (APIO20_paint)C++20
0 / 100
2 ms576 KiB
#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fi first #define se second const int N = 1e5+5; int cur[N],dp[N],check[N]; vector<int>pos[N],t; int minimumInstructions(int n, int m, int k, vector<int>c, vector<int>a, vector<vector<int>>b){ for(int i = 0; i < m; i++){ for(int j = 0; j < a[i]; j++) pos[b[i][j]].push_back(i); } for(int i = 0; i < n; i++){ vector<pii>dm; for(int col: pos[c[i]]){ int loj = (col+m-1) % m; dm.push_back({col,cur[loj]+1}); } if(i) for(int col: pos[c[i-1]]) cur[col] = 0; for(auto[x,y]: dm){ if(y >= m) check[i-m+1] = 1; cur[x] = y; } } dp[0] = 0; for(int i = 1; i <= n-m+1; i++) dp[i] = 1e9; t.push_back(0); for(int i = 0; i < n-m+1; i++){ if(check[i]) t.push_back(i+1); } int l = 0; for(int r = 1; r < t.size(); r++){ while(t[l] < t[r]-m) l++; dp[t[r]] = dp[t[l]]+1; } if(dp[n-m+1] >= 1e9) return -1; return dp[n-m+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...