제출 #996202

#제출 시각아이디문제언어결과실행 시간메모리
996202reginoxXylophone (JOI18_xylophone)C++17
0 / 100
0 ms344 KiB
#include<bits/stdc++.h>
#include "xylophone.h"
#define ll long long
#define all(v) begin(v), end(v)
#define pi pair<int, int>
#define vi vector<int>
using namespace std;
int a[5005], n;
int p1[5005], p2[5005];

bool thu(int d){
    a[2] = d;
    for(int i = 3; i <= n; i++){
        if(a[i-1] > 0){
            if(p1[i] == p2[i] || p2[i] == abs(a[i-1])) a[i] = -p1[i];
            else a[i] = p1[i];
        }
        else{
            if(p1[i] == p2[i] || p2[i] == abs(a[i-1])) a[i] = p1[i];
            else a[i] = -p1[i];
        }
    }
    for(int i = 2; i <= n; i++) a[i] += a[i-1];
    int dd = *min_element(a+1, a+n+1);
    for(int i = 1; i <= n; i++){
        a[i] += 1-dd;
    }
    return *max_element(a+1, a+n+1) <= n;
}

void solve(int m){
    n = m;
    int d = query(1, 2);
    for(int i = 3; i <= n; i++){
        p1[i] = query(i-1, i), p2[i] = query(i-2, i);
    }
    for(int tp = -d; tp <= d; tp+=2*d){
        if(thu(tp)){
            for(int i = 1; i <= n; i++) answer(i, a[i]);
            return ;
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...