Submission #709624

# Submission time Handle Problem Language Result Execution time Memory
709624 2023-03-14T03:43:19 Z Spade1 Xylophone (JOI18_xylophone) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
//#include "grader.cpp"
#include "xylophone.h"
using namespace std;

int Ar[5050];
bool mark[5050];

void solve(int N) {
    int idx;
    int l = 1, r = N;
    while (l < r) {
        int mid = (l+r)/2;
        if (query(mid+1, N) == N-1) l = mid+1;
        else r = mid;
    }
    idx = l;
    Ar[idx] = 1;
    mark[idx];
//    l = idx1+1, r = N;
//    while (l < r) {
//        int mid = (l+r)/2;
//        if (query(1, mid) == N-1) r = mid;
//        else l = mid+1;
//    }
//    idxn = l;

    for (int i = idx+1; i <= N; ++i) {
        int dif = query(i-1, i), cur;
        if (Ar[i-1]+dif>N || mark[Ar[i-1]+dif]) {
            cur = Ar[i-1]-dif;
        }
        else if (Ar[i-1]-dif<1 || mark[Ar[i-1]-dif]) {
            cur = Ar[i-1]+dif;
        }
        else {
            int dif2 = query(i-2, i);
            if (Ar[i-2] > Ar[i-1]+dif){
                if (Ar[i-2] - Ar[i-1] == dif2) cur = Ar[i-1]+dif;
            }
            if (Ar[i-2] < Ar[i-1]+dif) {
                if (Ar[i-1]+dif - min(Ar[i-2], A[i-1]) == dif2) cur = Ar[i-1]+dif;
            }
            if (Ar[i-2] > Ar[i-1]-dif){
                if (max(Ar[i-2], A[i-1]) - Ar[i-1]+dif == dif2) cur = Ar[i-1]-dif;
            }
            if (Ar[i-2] < Ar[i-1]-dif) {
                if (Ar[i-1] - Ar[i-2] == dif2) cur = Ar[i-1]-dif;
            }
        }
        Ar[i] = cur;
        mark[cur] = 1;
    }

    for (int i = idx-1; i >= 1; --i) {
        int dif = query(i, i+1), cur;
        if (Ar[i+1]+dif>N || mark[Ar[i+1]+dif]) {
            cur = Ar[i+1]-dif;
        }
        else if (Ar[i+1]-dif<1 || mark[Ar[i+1]-dif]) {
            cur = Ar[i+1]+dif;
        }
        else {
            int dif2 = query(i-2, i);
            if (Ar[i+2] > Ar[i+1]+dif){
                if (Ar[i+2] - Ar[i+1] == dif2) cur = Ar[i+1]+dif;
            }
            if (Ar[i+2] < Ar[i+1]+dif) {
                if (Ar[i+1]+dif - min(Ar[i+2], A[i+1]) == dif2) cur = Ar[i+1]+dif;
            }
            if (Ar[i+2] > Ar[i+1]-dif){
                if (max(Ar[i+2], A[i+1]) - Ar[i+1]+dif == dif2) cur = Ar[i+1]-dif;
            }
            if (Ar[i+2] < Ar[i+1]-dif) {
                if (Ar[i+1] - Ar[i+2] == dif2) cur = Ar[i=1]-dif;
            }
        }
        Ar[i] = cur;
        mark[cur] = 1;
    }

    for (int i = 1; i <= N; ++i) {
        answer(i, Ar[i]);
    }
}

Compilation message

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:19:13: warning: statement has no effect [-Wunused-value]
   19 |     mark[idx];
      |     ~~~~~~~~^
xylophone.cpp:42:48: error: 'A' was not declared in this scope
   42 |                 if (Ar[i-1]+dif - min(Ar[i-2], A[i-1]) == dif2) cur = Ar[i-1]+dif;
      |                                                ^
xylophone.cpp:45:34: error: 'A' was not declared in this scope
   45 |                 if (max(Ar[i-2], A[i-1]) - Ar[i-1]+dif == dif2) cur = Ar[i-1]-dif;
      |                                  ^
xylophone.cpp:69:48: error: 'A' was not declared in this scope
   69 |                 if (Ar[i+1]+dif - min(Ar[i+2], A[i+1]) == dif2) cur = Ar[i+1]+dif;
      |                                                ^
xylophone.cpp:72:34: error: 'A' was not declared in this scope
   72 |                 if (max(Ar[i+2], A[i+1]) - Ar[i+1]+dif == dif2) cur = Ar[i+1]-dif;
      |                                  ^