Submission #540436

#TimeUsernameProblemLanguageResultExecution timeMemory
540436krit3379Xylophone (JOI18_xylophone)C++17
100 / 100
99 ms440 KiB
#include<bits/stdc++.h>
#include "xylophone.h"
using namespace std;
#define N 5005

int a[N],b[N],ans[N];

void solve(int n){
    int i,mi=0,ma=0,pmi=1,pma=1;
    for(i=1;i<n;i++){
        a[i]=query(i,i+1);
        if(i!=n-1)b[i]=query(i,i+2);
    }
    for(i=1;i<n-1;i++){
        if(b[i]!=abs(a[i])+a[i+1]&&a[i]>0)a[i+1]*=-1;
        else if(b[i]==abs(a[i])+a[i+1]&&a[i]<0)a[i+1]*=-1;
    }
    ans[1]=0;
    for(i=1;i<n;i++){
        ans[i+1]+=ans[i]+a[i];
        if(ans[i+1]<mi)mi=ans[i+1],pmi=i+1;
        if(ans[i+1]>ma)ma=ans[i+1],pma=i+1;
    }
    for(i=1;i<=n;i++)ans[i]-=mi-1;
    if(pmi<pma)for(i=1;i<=n;i++)answer(i,ans[i]);
    else for(i=1;i<=n;i++)answer(i,n-ans[i]+1);
    return ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...