제출 #1189939

#제출 시각아이디문제언어결과실행 시간메모리
1189939Panda50OXylophone (JOI18_xylophone)C++20
0 / 100
0 ms400 KiB
#include "xylophone.h" int A[5005]; int dif[5005]; // A[i] = dif(i, i+1); void solve(int N) { int mx = query(1,N); int l = 1, r = N; for(int i = 1; i < N; ++i) dif[i] = query(i,i+1); while(l < r) { // move l if(query(l+1,r) != mx) break; ++l; } while(l < r) { // move r if(query(l,r-1) != mx) break; --r; } A[l] = 1; A[r] = N; // l , or r is the lowest int mx_dif = 0; for(int i = l-1; i >= 0; --i) { int dif = query(i,l); if(dif > mx_dif) { mx_dif = dif; A[i] = 1 + dif; } else { A[i] = A[i+1] - query(i,i+1); } } mx_dif = 0; for(int i = l+1; i < r; ++i) { int dif = query(l, i); if(dif > mx_dif) { mx_dif = dif; A[i] = 1 + dif; } else { A[i] = A[i-1] - query(i-1, i); } } mx_dif = 0; for(int i = r+1; i <= N; ++i) { int dif = query(l, i); if(dif > mx_dif) { mx_dif = dif; A[i] = 1 + dif; } else { A[i] = A[i-1] - query(i-1, i); } } for(int i = 1; i <= N; i++) { answer(i, A[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...