제출 #402266

#제출 시각아이디문제언어결과실행 시간메모리
402266Collypso벽 칠하기 (APIO20_paint)C++17
100 / 100
534 ms15116 KiB
#include <bits/stdc++.h> #include <vector> #include <unordered_map> #define ll long long #define ld long double #define vt vector #define pb push_back #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() #pragma GCC optimize ("O3") #pragma GCC optimize ("O2") //#define endl '\n' //#define int long long using namespace std; int minimumInstructions(int N, int M, int K, vt<int> C, vt<int> A, vt<vt<int>> B) { vt<vt<int>> master(K); for(int i = 0; i < M; i++) for(int j = 0; j < A[i]; j++) master[B[i][j]].pb(i); vt<vt<int>> dp(2, vt<int>(M)); vt<int> dpMax(N); dpMax[0] = 1; for(int m : master[C[0]]) dp[0][m] = 1; for(int i = 1; i < N; i++) { for(int m : master[C[i]]) { int len = min(M, dp[!(i & 1)][(m + M - 1) % M] + 1); dp[i & 1][m] = len; dpMax[i] = max(dpMax[i], len); } for(int m : master[C[i - 1]]) dp[!(i & 1)][m] = 0; } int ans = 0, pos = -1; for(int i = M - 1, d = 1, flag = 0; i < N && d > 0; i++, d--) { if (dpMax[i] == M) pos = i, flag = 1; if ((d == 1 || i == N - 1) && flag) ans++, d = M - (i - pos) + 1, flag = 0; } if (pos == N - 1) return ans; return -1; } /** main() { ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); freopen("input.txt", "r", stdin); int N, M, K; cin >> N >> M >> K; vt<int> C(N), A(M); vt<vt<int>> B(M); for(int i = 0; i < N; i++) cin >> C[i]; for(int i = 0; i < M; i++) { cin >> A[i]; B[i].resize(A[i]); for(int j = 0; j < A[i]; j++) cin >> B[i][j]; } //cout << M << endl; int ans = minimumInstructions(N, M, K, C, A, B); cout << ans << endl; //int ans = minimumInstructions(6, 4, 4, {2, 1, 0, 3, 2, 1}, {3}, {{2}, {1}, {0}, {3}}); //cout << ans << endl; } /**/

컴파일 시 표준 에러 (stderr) 메시지

paint.cpp:70:1: warning: "/*" within comment [-Wcomment]
   70 | /**/
      |
#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...