Submission #565634

#TimeUsernameProblemLanguageResultExecution timeMemory
565634shrimbXylophone (JOI18_xylophone)C++17
0 / 100
2 ms208 KiB
#pragma GCC optimize ("Ofast")
#pragma GCC target ("avx,avx2,fma")

#include "xylophone.h"
#include"bits/stdc++.h"
using namespace std;

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

template<class x>
using ordered_set = tree<x, null_type,less<x>, rb_tree_tag,tree_order_statistics_node_update>;

// #define int long long
#define endl '\n'
#define mod 1000000007
//\
#define mod 1686876991

const int maxn = 5001;

void solve (int n) {
    int l = 1, r = n;
    while (r - l > 1) {
        int m = (l + r) / 2;
        if (query(m, n) == n - 1) l = m;
        else r = m;
    }
    int L = l;
    l = L, r = n;
    while (r - l > 1) {
        int m = (l + r) / 2;
        if (query(L, m) == n - 1) r = m;
        else l = m;
    }
    int R = r; 
    int dif = 0;
    int A[n + 1];
    A[L] = 1;
    A[R] = n;
    for (int i = L - 1 ; i >= 1 ; i--) {
        int d = query(i, L);
        if (d != dif) A[i] = d + 1;
        dif = d;
    }
    dif = 0;
    for (int i = L + 1 ; i < R ; i++) {
        int d = query(L, i);
        if (d != dif) A[i] = d + 1;
        dif = d;
    }
    dif = 0;
    for (int i = R + 1 ; i <= n ; i++) {
        int d = query(R, i);
        if (d != dif) A[i] = n  - d;
        dif = d;
    }
    dif = 0;
    for (int i = R - 1; i > L ; i--) {
        int d = query(i, R);
        if (d != dif) A[i] = n - d;
        dif = d;
    }
    for (int i = 1 ; i <= n ; i++) answer(i, A[i]);
}

Compilation message (stderr)

xylophone.cpp:18:1: warning: multi-line comment [-Wcomment]
   18 | //\
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...