제출 #1190490

#제출 시각아이디문제언어결과실행 시간메모리
1190490Panda50OXylophone (JOI18_xylophone)C++20
0 / 100
0 ms404 KiB
#include "xylophone.h"

static int A[5001];

void solve(int N) {
	int mx_dif  = query(1, N);
    int l = 1, r = N;
    while(l < r) {
        if(query(l,r-1) != mx_dif) break;
        --r;
    }
    while(l < r) {
        if(query(l+1, r) != mx_dif) break;
        ++l;
    }
    A[l] = 1;
    A[r] = N;
    int dif = 0;

    for(int i = l-1; i >= 1; --i) {
        int new_dif = query(i, l);
        if(new_dif > dif) {
            dif = new_dif;
            A[i] = A[l] + dif;
        } else {
            A[i] = A[i+1] - query(i,i+1);
        }
    }

    for(int i = l+1; i < r; ++i) {
        int new_dif = query(l, i);
        if(new_dif > dif) {
            dif = new_dif;
            A[i] = A[l] + dif;
        } else {
            A[i] = A[i-1] - query(i-1, i);
        }
    }

    for(int i = r+1; i < N; ++i) {
        int new_dif = query(r, i);
        if(new_dif > dif) {
            dif = new_dif;
            A[i] = A[r] - dif;
        } else {
            A[i] = A[i-1] + query(i-1, i);
        }
    }
	for(int i = 1; i <= N; i++) {
		answer(i, A[i]);
	}

}

/*
5
1 5 3 4 2  
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...