Submission #492417

#TimeUsernameProblemLanguageResultExecution timeMemory
492417alextodoranXylophone (JOI18_xylophone)C++17
100 / 100
105 ms580 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> #include "xylophone.h" using namespace std; typedef long long ll; const int N_MAX = 5000; int query (int s, int t); void answer (int i, int a); int A[N_MAX + 2]; int D[N_MAX + 2]; int E[N_MAX + 2]; bool build (int N) { for (int i = 3; i <= N; i++) { A[i] = A[i - 1] - D[i]; if (max({A[i - 2], A[i - 1], A[i]}) - min({A[i - 2], A[i - 1], A[i]}) != E[i]) { A[i] = A[i - 1] + D[i]; } } int mnPos = 1; int mxPos = 1; for (int i = 1; i <= N; i++) { if (A[i] < A[mnPos]) { mnPos = i; } if (A[i] > A[mxPos]) { mxPos = i; } } int mn = A[mnPos]; for (int i = 1; i <= N; i++) { A[i] += 1 - mn; } return (mnPos < mxPos); } void solve (int N) { for (int i = 2; i <= N; i++) { D[i] = query(i - 1, i); } for (int i = 3; i <= N; i++) { E[i] = query(i - 2, i); } A[1] = 0; A[2] = 0 + D[2]; if (build(N) == false) { A[1] = 0; A[2] = 0 - D[2]; build(N); } for (int i = 1; i <= N; i++) { answer(i, A[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...