제출 #565682

#제출 시각아이디문제언어결과실행 시간메모리
565682shrimbXylophone (JOI18_xylophone)C++17
100 / 100
89 ms432 KiB
#pragma GCC optimize ("Ofast") #pragma GCC target ("avx,avx2,fma") #include "xylophone.h" #include"bits/stdc++.h" using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<class x> using ordered_set = tree<x, null_type,less<x>, rb_tree_tag,tree_order_statistics_node_update>; // #define int long long #define endl '\n' #define mod 1000000007 //\ #define mod 1686876991 const int maxn = 5001; int nn; int SET (int d, int a, bool inc) { int ret; if (inc) ret = a + d; else ret = a - d; if (ret < 1 || ret > nn) return -1; return ret; } int A[maxn], B[maxn]; int n; void iterate () { A[1] = B[1] = 0; for (int i = 2 ; i <= n ; i++) { int d = query(i - 1, i); if (i == 2) { A[i] = + d; B[i] = - d; continue; } int d2 = query(i - 2, i); if (A[i - 1] < A[i - 2]) { if (d2 == d + A[i - 2] - A[i - 1]) { A[i] = A[i - 1] - d; } else { A[i] = A[i - 1] + d; } } else { if (d2 == d + A[i - 1] - A[i - 2]) { A[i] = A[i - 1] + d; } else { A[i] = A[i - 1] - d; } } if (B[i - 1] < B[i - 2]) { if (d2 == d + B[i - 2] - B[i - 1]) { B[i] = B[i - 1] - d; } else { B[i] = B[i - 1] + d; } } else { if (d2 == d + B[i - 1] - B[i - 2]) { B[i] = B[i - 1] + d; } else { B[i] = B[i - 1] - d; } } } } void solve (int nxx) { nn=n; n = nxx; iterate(); int mnA = 1 - (*min_element(A + 1, A + 1 + n)); int mnB = 1 - (*min_element(B + 1, B + 1 + n)); for (int i = 1 ; i <= n ; i++) A[i] += mnA, B[i] += mnB; int *C = A; for (int i = 1 ; i <= n ; i++) { if (A[i] == n) {C = B;} if (A[i] == 1) break; } for (int i = 1 ; i <= n ; i++) answer(i, C[i]); }

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

xylophone.cpp:18:1: warning: multi-line comment [-Wcomment]
   18 | //\
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...