Submission #416401

#TimeUsernameProblemLanguageResultExecution timeMemory
416401NintsiChkhaidzeXylophone (JOI18_xylophone)C++14
100 / 100
101 ms448 KiB
#include <iostream>
#include "xylophone.h"
using namespace std;
 
int a[5005];
void solve(int n) {
    a[1] = 0,a[2] = query(1,2);
    int x = a[2];
    for (int i=2;i<n;i++){
        int y = query(i,i+1),z = query(i-1,i+1);
        if (x + y == z){
            if (a[i] > a[i - 1]) a[i + 1] = a[i] + y;
            else a[i + 1] = a[i] - y;
        }
        else{
            if (a[i] > a[i - 1]) a[i + 1] = a[i] - y;
            else a[i + 1] = a[i] + y;
        }
        x = y;
    }
    int ind1=0,ind2=0,maxx = -1e9,minn = 1e9;
    for (int i=1;i<=n;i++){
        if (a[i] < minn) ind1 = i,minn = a[i];
        if (a[i] > maxx) ind2 = i,maxx = a[i];
    }
    if (ind2 < ind1){
        for (int i=1;i<=n;i++)
            a[i] = -a[i];
        minn = -maxx;
    }
    for (int i=1;i<=n;i++)
        answer(i,a[i] + 1 - minn);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...