Submission #1116889

#TimeUsernameProblemLanguageResultExecution timeMemory
1116889SofiatpcXylophone (JOI18_xylophone)C++17
47 / 100
168 ms948 KiB
#include <bits/stdc++.h> #include "xylophone.h" using namespace std; int v[5005]; int calc(int a, int b, int x, int y){ if(abs(a-b) != y && x != y){ if(a > b)return b-x; return b+x; }else{ if(a > b)return b+x; return b-x; } } void solve(int n) { int l = 1, r = n; while(l!= r){ int mid = (l+r+1)/2; if(query(mid,n) == n-1)l = mid; else r = mid-1; } v[l] = 1; v[l+1] = 1+query(l,l+1); for(int i = l+2; i <= n; i++) v[i] = calc(v[i-2],v[i-1], query(i-1,i), query(i-2,i)); if(l != 1){ v[l-1] = 1+query(l-1,l); for(int i = l-2; i >= 1; i--) v[i] = calc(v[i+2], v[i+1], query(i,i+1), query(i,i+2)); } for(int i = 1; i <= n; i++) answer(i,v[i]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...