# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
763203 | 2023-06-22T06:40:40 Z | vjudge1 | Xylophone (JOI18_xylophone) | C++14 | 0 ms | 0 KB |
#include<bits/stdc++.h> typedef long long ll; using namespace std; const int maxn=200005; int n; int a[maxn]; void solve(int n) { a[1]=0; a[2]=query(1,2); for (int i=3; i<=n; i++) { int x=query(1,i); int y=query(i-1,i); if (x!=y+max(a[i-1],a[i-2])-min(a[i-1],a[i-2]) && a[i-2]>a[i-1]) { a[i]=a[i-1]+y; } else if (x==y+max(a[i-1],a[i-2])-min(a[i-1],a[i-2]) && a[i-2]<a[i-1]) { a[i]=a[i-1]+y; } else { a[i]=a[i-1]-y; } } int minn=1e9; int mann=-1e9; for (int i=1; i<=n; i++) { minn=min(minn,a[i]); mann=max(mann,a[i]); } int pos_min; int pos_max; for (int i=1; i<=n; i++) { if (a[i]==minn) { pos_min=i; } if (a[i]==mann) { pos_max=i; } } if (pos_min>pos_max) { for (int i=1; i<=n; i++) { a[i]*=-1; } } for (int i=1; i<=n; i++) { answer(i,a[i]-minn+1); } }