Submission #517328

#TimeUsernameProblemLanguageResultExecution timeMemory
517328blueArcade (NOI20_arcade)C++17
7 / 100
1 ms336 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using pii = pair<int, int>; using vi = vector<int>; using vvi = vector<vi>; const int mx = 100; int A[mx], T[mx]; bool jmp(int l, int r) { return abs(A[r] - A[l]) <= T[r] - T[l]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; cin >> N >> M; pii O[M]; for(int i = 0; i < M; i++) cin >> O[i].first; for(int i = 0; i < M; i++) cin >> O[i].second; sort(O, O+M); bool works = 1; for(int i = 0; i+1 < M; i++) if(abs(O[i+1].second - O[i].second) > abs(O[i+1].first - O[i].first)) works = 0; for(int i = 0; i < M; i++) { T[i] = O[i].first; A[i] = O[i].second; } if(works) cout << 1 << '\n'; else { works = 0; vvi dp(M, vi(M, 0)); for(int r = 1; r < M; r++) { for(int l = 0; l < r; l++) { if(l == 0 && r == 1) { dp[l][r] = 1; continue; } if(r > l+1) { dp[l][r] |= (dp[l][r-1] && jmp(r-1, r)); } else if(l-2 >= 0) { dp[l][r] |= (dp[l-2][l] && jmp(l-1, r)); } else if(l-1 >= 0) { dp[l][r] |= jmp(l-1, r); } } if(r == M-1) works = 1; } if(works) cout << 2 << '\n'; else cout << 3 << '\n'; } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...