제출 #895855

#제출 시각아이디문제언어결과실행 시간메모리
895855starchanXylophone (JOI18_xylophone)C++17
0 / 100
1 ms500 KiB
#include "xylophone.h" #include<bits/stdc++.h> using namespace std; #define in pair<int, int> #define f first #define s second #define pb push_back #define pob pop_back #define INF (int)1e17 #define MX (int)3e5+5 #define fast() ios_base::sync_with_stdio(false); cin.tie(NULL) void solve(int n) { if(n == 2) { answer(1, 1); answer(2, 2); return; } int l = 1; int r = n; while(l < r) { int m = (l+r)/2; int t = query(m, n); if(t != (n-1)) r = m; else l = m+1; } l--; vector<int> d(n+1); vector<int> d2(n+1); vector<int> a(n+1); for(int i = 2; i <= n; i++) d[i] = query(i-1, i); a[l] = 1; if(l >= 2) a[l-1] = 1+d[l]; a[l+1] = 1+d[l+1]; for(int i = 3; i <= n; i++) d2[i] = query(i-2, i); for(int i = l+2; i <= n; i++) { if(abs(a[i-1]+d[i]-a[i-2]) == d2[i]) a[i] = a[i-1]+d[i]; else a[i] = a[i-1]-d[i]; } for(int i = l-2; i >= 1; i--) { if(abs(a[i+2]-a[i+1]-d[i+1]) == d2[i+2]) a[i] = a[i+1]+d[i+1]; else a[i] = a[i+1]-d[i+1]; } for(int i = 1; i <= n; i++) answer(i, a[i]); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...