Submission #1032527

#TimeUsernameProblemLanguageResultExecution timeMemory
1032527vjudge1Xylophone (JOI18_xylophone)C++17
100 / 100
83 ms21416 KiB

#include<bits/stdc++.h>
using namespace std;
static int A[5000];
int sv[5010][5010],CC=0;
int query(int,int);
void answer(int,int);
void solve(int);
int myqry(int l,int r){
    if(l>r)swap(l,r);
    if(l==r)return 0;
    if(sv[l][r])return sv[l][r];
    assert(++CC<=10000);
    return sv[l][r]=query(l,r);
}
int ans[5010];
int makesense(int a,int b,int c,int ac){
    return ac==max({a,b,c})-min({a,b,c});
}

void solve(int N) {
    ans[2]=myqry(1,2);
    for(int i=3;i<=N;i++){
        int k=myqry(i-1,i);
        int c=myqry(i-2,i);
        if(makesense(ans[i-1]-k,ans[i-1],ans[i-2],c))
            ans[i]=ans[i-1]-k;
        else ans[i]=ans[i-1]+k;
    }
    int d=min_element(ans+1,ans+N+1)-max_element(ans+1,ans+N+1);
    if(d>0)
        for(int i=1;i<=N;i++)
            ans[i]=-ans[i];
    int c=*min_element(ans,ans+N);
    for(int i=1;i<=N;i++)
        answer(i,ans[i]-c+1);
}

Compilation message (stderr)

xylophone.cpp:4:12: warning: 'A' defined but not used [-Wunused-variable]
    4 | static int A[5000];
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...