제출 #257196

#제출 시각아이디문제언어결과실행 시간메모리
257196a_playerXylophone (JOI18_xylophone)C++14
0 / 100
0 ms256 KiB
#ifndef A #include "xylophone.h" #endif #include <bits/stdc++.h> using namespace std; const int nax=5e3+3; int d[nax],t[nax]; int m[nax]; int p[nax]; void solve(int N) { for(int i=0;i<N-1;i++)d[i]=query(i,i+1); for(int i=0;i<N-2;i++)t[i]=query(i,i+2); m[0]=d[0]; if(t[0]==d[0]+d[1])m[1]=d[1]; else m[1]=-d[1]; for(int i=1;i<N-2;i++){ int s=m[i]/abs(m[i]); if(t[i]==d[i]+d[i+1])m[i+1]=s*d[i+1]; else m[i+1]=-s*d[i+1]; } for(int i=1;i<N;i++)p[i]=p[i-1]+m[i-1]; int mini=*min_element(p,p+N); for(int i=0;i<N;i++)p[i]+=-mini+1; bool flag=false; bool uno=false; for(int i=0;i<N;i++){ if(p[i]==1)uno=true; if(p[i]>N)flag=true; if(p[i]==N&&!uno)flag=true; } if(!flag){ for(int i=0;i<N;i++)answer(i,p[i]); return; } for(int i=1;i<N;i++)p[i]=p[i-1]-m[i-1]; mini=*min_element(p,p+N); for(int i=0;i<N;i++)p[i]+=-mini+1; for(int i=0;i<N;i++)answer(i,p[i]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...