Submission #1170044

#TimeUsernameProblemLanguageResultExecution timeMemory
1170044TlenekWodoruMinerals (JOI19_minerals)C++20
40 / 100
18 ms5956 KiB
#include "minerals.h"
#include<bits/stdc++.h>
using namespace std;
void Solve(int n)
{
    const int N=n*2;
    int last=0;
    vector<int>A,B;
    for(int i=1;i<=N;i++)
    {
        int u=Query(i);
        if(u!=last){A.push_back(i);}
        else{B.push_back(i);}
        last=u;
    }
    vector<pair<int,int>>G(n,{0,n-1});
    vector<vector<int>>V(n);
    bool Gyat=1;
    while(true)
    {
        bool cv=0;
        for(int i=0;i<n;i++)
        {
            if(G[i].first==G[i].second){continue;}
            cv=1;
            const int mid=(G[i].first+G[i].second)>>1;
            V[mid].push_back(i);
        }
        if(cv==0){break;}
        if(Gyat==0)
        {
            for(int i=0;i<n;i++)
            {
                last=Query(A[i]);
                for(int u : V[i])
                {
                    int t=Query(B[u]);
                    if(t==last)
                    {
                        G[u].second=i;
                    }
                    else
                    {
                        G[u].first=i+1;
                    }
                    last=t;
                }
                V[i].clear();
            }
        }
        else
        {
            for(int i=n-1;i>=0;i--)
            {
                for(int u : V[i])
                {
                    int t=Query(B[u]);
                    if(t==last)
                    {
                        G[u].second=i;
                    }
                    else
                    {
                        G[u].first=i+1;
                    }
                    last=t;
                }
                last=Query(A[i]);
                V[i].clear();
            }
        }
        Gyat^=1;
    }
    for(int i=0;i<n;i++)
    {
        Answer(A[G[i].first],B[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...
#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...