Submission #916456

#TimeUsernameProblemLanguageResultExecution timeMemory
916456duckindogPainting Walls (APIO20_paint)C++14
28 / 100
862 ms2560 KiB
//from duckindog wth depression #include<bits/stdc++.h> using namespace std; //#define LOCAL #ifndef LOCAL #include "paint.h" #endif // LOCAL const int N = 500 + 10; int f[N]; int minimumInstructions(int n, int m, int k, vector<int> C, vector<int> A, vector<vector<int>> B) { memset(f, 63, sizeof f); f[0] = 0; for (int l = 0; l < n - m + 1; ++l) { int r = l + m - 1; bool pass = 0; for (int x = 0; x < m; ++x) { bool good = 1; for (int i = l; i <= r; ++i) { int y = (i - l + x) % m; good &= binary_search(B[y].begin(), B[y].end(), C[i]); } pass |= good; } if (pass) { for (int i = l; i <= r; ++i) f[r + 1] = min(f[r + 1], f[i] + 1); } } return f[n] > 1e9 ? -1 : f[n]; } #ifdef LOCAL int32_t main() { cin.tie(0)->sync_with_stdio(0); if (fopen("duck.inp", "r")) { freopen("duck.inp", "r", stdin); freopen("duck.out", "w", stdout); } int n, m, k; cin >> n >> m >> k; vector<int> C, A; vector<vector<int>> B; for (int i = 1; i <= n; ++i) { int x; cin >> x; C.push_back(x); } for (int i = 1; i <= m; ++i) { int a; cin >> a; A.push_back(a); vector<int> vt; for (int j = 1; j <= a; ++j) { int x; cin >> x; vt.push_back(x); } sort(vt.begin(), vt.end()); B.push_back(vt); } cout << minimumInstructions(n, m, k, C, A, B); } #endif // LOCAL
#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...