Submission #1188897

#TimeUsernameProblemLanguageResultExecution timeMemory
1188897lizaArt Collections (BOI22_art)C++20
0 / 100
0 ms408 KiB
#include "art.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> order;
int r1;
void _merge(int l, int m, int r)
{
    int n1 = m-l+1;
    int n2 = r-m;

    vector<int> L(n1), R(n2);
    vector<int> order1=order;
    for(int i = 0; i < n1; i++) L[i] = order[l+i];
    for(int i = 0; i < n2; i++) R[i] = order[m+1+i];

    int i = 0, j = 0;
    int k = l;
    while(i < n1 && j < n2)
    {
        swap(order1[l+i], order1[m+1+j]);
        int r2 = publish(order1);
        if(r2==0)
        {
            answer(order1);
        }
        swap(order1[l+i], order1[m+1+j]);
        if(r1 < r2)
        {
            order[k] = L[i];
            i++;
        }
        else
        {
            order[k]=R[j];
            j++;
        }
        k++;
    }
    while(i < n1)
    {
        order[k] = L[i];
        i++;
        k++;
    }
    while(j < n2)
    {
        order[k] = R[j];
        j++;
        k++;
    }

}

void ms(int l, int r)
{
    if(l >= r) return;
    int m = l+(r-l)/2;
    ms(l, m);
    ms(m+1, r);
    _merge(l, m, r);
}


void solve(int N) {

    for (int i = 1; i <= N; i++)
    {
        order.push_back(i);
    }
    r1= publish(order);
        if(r1==0)
        {
           answer(order);
        }
    ms(0, N-1);
    answer(order);


}


//publish
//answer
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...