제출 #1256413

#제출 시각아이디문제언어결과실행 시간메모리
1256413tvgk도서관 (JOI18_library)C++20
100 / 100
75 ms476 KiB
#include <cstdio>
#include <vector>
#include "library.h"
#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 1e3 + 7;

vector<int> w[mxN], ans;
int cnt[mxN], n;

int Ask(int u, int v)
{
    vector<int> vc(n, 0);
    int res = v - u + 1;
    for (int i = u; i <= v; i++)
    {
        vc[i - 1] = 1;
        res -= cnt[i];
    }

    return Query(vc) - res;
}

void DFS(int j, int par)
{
    ans.push_back(j);
    for (int i : w[j])
    {
        if (par == i)
            continue;
        DFS(i, j);
    }
}

void Solve(int N)
{
    n = N;
    for (int i = 1; i <= n; i++)
    {
        while (Ask(1, i))
        {
            int l = 1, r = i - 1, k = 1;
            while (l <= r)
            {
                int mid = (l + r) / 2;

                if (Ask(mid, i))
                {
                    k = mid;
                    l = mid + 1;
                }
                else
                    r = mid - 1;
            }

            cnt[k]++;
            w[k].push_back(i);
            w[i].push_back(k);
        }
    }

    for (int i = 1; i <= n; i++)
    {
        if (w[i].size() <= 1)
        {
            DFS(i, -1);
            break;
        }
    }

	Answer(ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...