Submission #1177177

#TimeUsernameProblemLanguageResultExecution timeMemory
1177177abdalrhman_sfarArt Collections (BOI22_art)C++20
50 / 100
379 ms464 KiB
#include<bits/stdc++.h>
#include "art.h"
using namespace std;
void solve(int N) {
    int n=N;
    vector<int> v(n),v1(n),v2(n);
    iota(v1.begin(),v1.end(),1);
    int i,j=1;
    for (i=n-1;i>=0;--i) v2[i]=(j++);
    int c1=publish(v1),c2=publish(v2),c;
    if (c1<=c2) v=v1,c=c1;
    else v=v2,c=c2;
    for (i=1;i<n;++i){
        int l=-1,r=i,k=c;
        vector<int> ar(v);
        while (l+1<r) {
            int mid=(l+r)>>1;
            vector<int> a(v);
            int s=(i-mid);
            for (j=i-1;j>=mid;--j) swap(a[j],a[j+1]);
            int x=publish(a);
            if ((c-x)==s) r=mid,k=x,ar=a;
            else l=mid;
        } c=k,v=ar;
        if (c==0) {answer(v); return; }
    } answer(v);
}
#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...