Submission #1319628

#TimeUsernameProblemLanguageResultExecution timeMemory
1319628Muhammad_AneeqSuper Dango Maker (JOI22_dango3)C++20
22 / 100
679 ms788 KiB
#include "dango3.h"
#include <bits/stdc++.h>
using namespace std;
void Solve(int n, int m) 
{
    vector<vector<int>>ans;
    ans.push_back({n*m});
    vector<int>que;
    for (int i=1;i<=n*m-2;i++)
        que.push_back(i);
    int pre=m-1;
    while (que.size())
    {
        int z=Query(que);
        int f=que.back();
        if (z==pre-1)
        {
            ans.push_back({f+1});
            // cout<<1<<' '<<ans.size()<<' '<<f+1<<endl;
            pre=z;
        }
        else
        {
            int st=-1,en=ans.size()-1;
            while (st+1<en)
            {
                int mid=(st+en)/2;
                vector<int>g=que;
                for (int j=0;j<=mid;j++)
                {
                    for (auto k:ans[j])
                        g.push_back(k);
                }
                int f=Query(g);
                if (f==pre+mid+1)
                    st=mid;
                else
                    en=mid;
            }
            // cout<<en<<' '<<f+1<<endl;
            ans[en].push_back(f+1);
        }
        que.pop_back();
    }
    for (auto& i:ans)
    {
        if (i.size()!=n)
            i.push_back(1);
    }
    for (auto i:ans)
        Answer(i);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...