제출 #320795

#제출 시각아이디문제언어결과실행 시간메모리
320795mohamedsobhi777Xylophone (JOI18_xylophone)C++14
컴파일 에러
0 ms0 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; int n; int a1, an; void dac(int l, int r) { if (l + 1 == r) { a1 = l; an = r; return; } int mid = (l + r) >> 1; if (query(l, mid) == n - 1) { dac(l, mid); } else if (query(mid + 1, r) == n - 1) { dac(mid + 1, r); } else { int L = l, R = mid; while (L <= R) { int m = (L + R) >> 1; if (query(m, r) == n - 1) { a1 = m; L = m + 1; } else R = m - 1; } L = mid + 1, R = r; while (L <= R) { int m = (L + R) >> 1; if (query(l, m) == n - 1) { an = m; R = m - 1; } else L = m + 1; } return; } } int arr[10000]; int vis[10000]; void conLhs() { if (a1 > 1) arr[a1 - 1] = query(a1 - 1, a1) + 1; for (int i = a1 - 2; i > 0; --i) { int q1 = query(i, i + 1); int q2 = abs(arr[i + 1] - arr[i + 2]); int q3 = query(i, i + 2); int sgn = ((q1 + q2 == q3 && arr[i + 1] > arr[i + 2]) || (arr[i + 1] < arr[i + 2] && q1 + q2 != q3) ? 1 : -1); arr[i] = arr[i + 1] + q1 * sgn; } } void conMhs() { if (a1 + 1 <= N) arr[a1 + 1] = query(a1, a1 + 1) + 1; for (int i = a1 + 2; i <= N; ++i) { int q1 = query(i - 1, i); int q2 = abs(arr[i - 1] - arr[i - 2]); int q3 = query(i - 2, i); int sgn = ((q1 + q2 == q3 && arr[i - 1] > arr[i - 2]) || (arr[i - 1] < arr[i - 2] && q1 + q2 != q3) ? 1 : -1); arr[i] = arr[i - 1] + q1 * sgn; } } void solve(int N) { n = N; dac(1, N); arr[a1] = 1; arr[an] = N; conLhs(); conMhs(); for (int i = 1; i <= N; ++i) { answer(i, arr[i]); //printf("%d ", arr[i]); } }

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

xylophone.cpp: In function 'void conMhs()':
xylophone.cpp:80:23: error: 'N' was not declared in this scope
   80 |         if (a1 + 1 <= N)
      |                       ^
xylophone.cpp:82:35: error: 'N' was not declared in this scope
   82 |         for (int i = a1 + 2; i <= N; ++i)
      |                                   ^