답안 #122022

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
122022 2019-06-27T11:39:10 Z eriksuenderhauf Xylophone (JOI18_xylophone) C++11
0 / 100
2 ms 256 KB
#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
const int MAXN = 1e4 + 5;
int qry[MAXN][2];
int a[MAXN];
set<int> tmp;
bool finish = 0;

void detect_pitch(int n) {
    int mi = 0, fl = 0;
    for (int i = 0; i < n; i++)
        mi = min(mi, a[i]);
    for (int i = 0; i < n; i++) {
        a[i] -= mi;
        if (a[i] == n - 1 && !fl)
            return;
        if (a[i] == 0)
            fl = 1;
    }
    for (int i = 0; i < n; i++)
        answer(i+1, a[i]);
    finish = 1;
}

void solve(int n) {
    for (int i = 0; i + 1 < n; i++)
        qry[i][0] = query(i, i + 1);
    for (int i = 0; i + 2 < n; i++)
        qry[i][1] = query(i, i + 2);
    a[1] = qry[0][0];
    tmp.insert(0);
    tmp.insert(a[1]);
    for (int i = 2; i < n; i++) {
        if (qry[i - 2][0] == qry[i - 2][1]) {
            int fl = 1;
            if (a[i - 1] > a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        } else if (qry[i - 2][0] + qry[i - 1][0] == qry[i - 2][1]) {
            int fl = 1;
            if (a[i - 1] < a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        } else {
            int fl = 1;
            if (a[i - 1] > a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        }
        tmp.insert(a[i]);
    }
    if ((int)tmp.size() == n)
        detect_pitch(n);
    if (finish)
        return;
    for (int i = 0; i < n; i++)
        a[i] = 0;
    tmp.clear();
    a[1] = -qry[0][0];
    tmp.insert(0);
    tmp.insert(a[1]);
    for (int i = 2; i < n; i++) {
        if (qry[i - 2][0] == qry[i - 2][1]) {
            int fl = 1;
            if (a[i - 1] > a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        } else if (qry[i - 2][0] + qry[i - 1][0] == qry[i - 2][1]) {
            int fl = 1;
            if (a[i - 1] < a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        } else {
            int fl = 1;
            if (a[i - 1] > a[i - 2])
                fl = -1;
            a[i] = a[i - 1] + fl * qry[i - 1][0];
        }
        tmp.insert(a[i]);
    }
    if ((int)tmp.size() == n)
        detect_pitch(n);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -