Submission #894031

#TimeUsernameProblemLanguageResultExecution timeMemory
894031vovikXylophone (JOI18_xylophone)C++17
11 / 100
8 ms440 KiB
void solve(int N); int query(int s, int t); void answer(int i, int a); #include <bits/stdc++.h> void solve(int N) { std::vector<int> a(N + 1), b(N), c(N - 1); for (int i = 1; i < N; ++i) b[i] = query(i, i + 1); for (int i = 1; i + 1 < N; ++i) c[i] = query(i, i + 2); a[2] = b[1]; int x = 1; for (int i = 3; i <= N; ++i) a[i] = a[i - 1] + (x *= 1 - 2 * (c[i - 2] != b[i - 2] + b[i - 1])) * b[i - 1]; int mx = std::max_element(a.begin() + 1, a.end() + 1) - a.begin(); int mn = std::min_element(a.begin() + 1, a.end() + 1) - a.begin(); if (mn > mx) { a[2] = -b[1]; int x = -1; for (int i = 3; i <= N; ++i) a[i] = a[i - 1] + (x *= 1 - 2 * (c[i - 2] != b[i - 2] + b[i - 1])) * b[i - 1]; } int h = *std::min_element(a.begin() + 1, a.end() + 1); for (int i = 1; i <= a.size(); ++i) a[i] -= h - 1; for (int i = 1; i <= N; ++i) answer(i, a[i]); } #ifdef __APPLE__ #include <cstdio> #include <cstdlib> static const int N_MAX = 5000; static const int Q_MAX = 10000; static int N; static int A[N_MAX]; static bool used[N_MAX]; static int query_c; static int answer_c; int query(int s, int t) { if(query_c >= Q_MAX) { printf("Wrong Answer\n"); exit(0); } query_c++; if(!(1 <= s && s <= t && t <= N)) { printf("Wrong Answer\n"); exit(0); } int mx = 0, mn = N + 1; for(int i = s - 1; i < t; i++) { if(mx < A[i]) { mx = A[i]; } if(mn > A[i]) { mn = A[i]; } } return mx - mn; } void answer(int i, int a) { answer_c++; if(!(1 <= i && i <= N)) { printf("Wrong Answer\n"); exit(0); } if(!(1 <= a && a <= N)) { printf("Wrong Answer\n"); exit(0); } if(used[i - 1]) { printf("Wrong Answer\n"); exit(0); } if(a != A[i - 1]) { printf("Wrong Answer\n"); exit(0); } used[i - 1] = true; } int main() { query_c = 0; answer_c = 0; if(scanf("%d", &N) != 1) { fprintf(stderr, "Error while reading input\n"); exit(1); } for(int i = 0; i < N; i++) { if(scanf("%d", A + i) != 1) { fprintf(stderr, "Error while reading input\n"); exit(1); } used[i] = false; } solve(N); if(!(answer_c == N)) { printf("Wrong Answer\n"); exit(0); } printf("Accepted : %d\n", query_c); } #endif

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:22:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |  for (int i = 1; i <= a.size(); ++i) a[i] -= h - 1;
      |                  ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...