제출 #1272354

#제출 시각아이디문제언어결과실행 시간메모리
1272354thesenXylophone (JOI18_xylophone)C++20
0 / 100
1 ms400 KiB
#include <bits/stdc++.h> #include "xylophone.h" #define pb push_back #define ll long long #define vll vector <ll> #define vbool vector<bool> #define pairll pair<ll,ll> #define fi first #define sc second #define rever greater<ll>() using namespace std; void solve(int n){ ll a; for(ll i = 1; i < n; i++){ if(query(i+1, n) != n-1){ a = i;break; } } vll res(n+1); res[a]=1; if(a > 1){ ll d = query(a-1, a); res[a-1] = d+1; } for(ll i = a-2; i > 0; i--){ ll x = query(i, i+2); ll y = query(i, i+1); ll z = abs(res[i+1]-res[i+2]); if(x == y+z){ if(res[i+1] > res[i+2]){ res[i] = res[i+1]+y; }else{ res[i] = res[i+1]-y; } }else if(x == z){ if(res[i+1] > res[i+2]){ res[i] = res[i+1]-y; }else{ res[i] = res[i+1]+y; } }else{ if(res[i+1] > res[i+2]){ res[i] = res[i+1]-y; }else{ res[i] = res[i+1]+y; } } } res[a+1] = 1 + query(a, a+1); for(ll i = a+2; i <= n; i++){ ll x = query(i, i-2); ll y = query(i, i-1); ll z = abs(res[i-1]-res[i-2]); if(x == y+z){ if(res[i-1] > res[i-2]){ res[i] = res[i-1]+y; }else{ res[i] = res[i-1]-y; } }else if(x == z){ if(res[i-1] > res[i-2]){ res[i] = res[i-1]-y; }else{ res[i] = res[i-1]+y; } }else{ if(res[i-1] > res[i-2]){ res[i] = res[i-1]-y; }else{ res[i] = res[i-1]+y; } } } for(ll i = 1; i <= n; i++)answer(i, res[i]); } // int main(){ // ios::sync_with_stdio(false); cin.tie(nullptr); // ll t=1; //cin >> t; // for(int i = 1; i <= t; i++){ // solve(); // } // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...