제출 #1199460

#제출 시각아이디문제언어결과실행 시간메모리
1199460yeediot벽 칠하기 (APIO20_paint)C++20
0 / 100
0 ms324 KiB
#include<bits/stdc++.h> #include "paint.h" using namespace std; #define F first #define S second #define all(x) x.begin(),x.end() #define pii pair<int,int> #define pb push_back #define sz(x) (int)(x.size()) #define chmin(x,y) x=min(x,y) #define chmax(x,y) x=max(x,y) #define vi vector<int> #define vp vector<pii> #define vvi vector<vi> #define ykh mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) #define __lg(x) 63-__builtin_clzll(x) int n, m, k; int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) { n = N, m = M, k = K; vector<int>col[k + 1]; for(int i = 0; i < m; i++){ for(int j = 0; j < A[i]; j++){ col[B[i][j]].pb(i); } } map<int, int>dp[n]; vector<int>ok(n); for(int i = n - 1; i >= 0; i--){ for(auto j : col[C[i]]){ if(dp[i + 1].find((j + 1) % m) != dp[i + 1].end())dp[i][j] = dp[i + 1][(j + 1) % m] + 1; else dp[i][j] = 1; ok[i] |= (dp[i][j] >= m); } } vector<int>dp2(n, 2e9); multiset<int>st; for(int i = 0; i < n; i++){ if(i - m - 1 >= 0) st.erase(st.find(dp2[i - m - 1])); if(ok[i]){ dp2[i] = (sz(st) ? *st.begin() : 0) + 1; } st.insert(dp2[i]); } return (dp2[n - m] < 2e9 ? dp2[n - m] : -1); } #ifdef local int main() { freopen("/Users/iantsai/cpp/input.txt","r",stdin); freopen("/Users/iantsai/cpp/output.txt","w",stdout); int N, M, K; assert(3 == scanf("%d %d %d", &N, &M, &K)); //cout << N << ' ' << M << ' ' << K << '\n'; std::vector<int> C(N); for (int i = 0; i < N; ++i) { assert(1 == scanf("%d", &C[i])); //cout << C[i] << ' '; } //cout << '\n'; //return 0; std::vector<int> A(M); std::vector<std::vector<int>> B(M); for (int i = 0; i < M; ++i) { assert(1 == scanf("%d", &A[i])); B[i].resize(A[i]); for (int j = 0; j < A[i]; ++j) { assert(1 == scanf("%d", &B[i][j])); } } int minimum_instructions = minimumInstructions(N, M, K, C, A, B); printf("%d\n", minimum_instructions); return 0; } #endif
#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...