Submission #1155447

#TimeUsernameProblemLanguageResultExecution timeMemory
1155447AlgorithmWarriorXylophone (JOI18_xylophone)C++20
100 / 100
25 ms416 KiB
#include <cstdio>
#include <cstdlib>
#include "xylophone.h"

int const MAX=5005;
int delta[MAX];

int sign(int x){
    if(x>0)
        return 1;
    return -1;
}

void solve(int N) {
    delta[2]=query(1,2);
    int i;
    for(i=3;i<=N;++i){
        int del2=query(i-1,i);
        int del3=query(i-2,i);
        if(abs(delta[i-1])+del2==del3)
            delta[i]=sign(delta[i-1])*del2;
        else
            delta[i]=-sign(delta[i-1])*del2;
    }
    for(i=3;i<=N;++i)
        delta[i]+=delta[i-1];
    int pmin=1,pmax=1;
    for(i=2;i<=N;++i){
        if(delta[i]<delta[pmin])
            pmin=i;
        if(delta[i]>delta[pmax])
            pmax=i;
    }
    if(pmax<pmin){
        for(i=2;i<=N;++i)
            delta[i]*=-1;
    }
    int vmin=0;
    for(i=2;i<=N;++i)
        if(delta[i]<vmin)
            vmin=delta[i];
    for(i=1;i<=N;++i){
        delta[i]+=1-vmin;
        answer(i,delta[i]);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...