제출 #1225239

#제출 시각아이디문제언어결과실행 시간메모리
1225239MarwenElarbiMinerals (JOI19_minerals)C++20
25 / 100
43 ms7392 KiB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;

//CODE

vector<int> tab[43000*4];
vector<pair<int,int>> ans;
set<int> st;
set<int> st_;
int lst;
void daq(int pos,int l,int r){
    if(l>r) return;
    if(l==r){
        if(st_.count(l)) lst=Query(l);
        ans.push_back({l,tab[pos].back()});
        return;
    }
    int mid=(r+l)/2;
    int i=r;
    while(i>mid){
        lst=Query(i);
        st_.erase(i);
        i--;
    }
    if(st.count(tab[pos][0])){
        for(auto u:tab[pos]){
            int a=Query(u);
            st.erase(u);
            if (a<lst) tab[pos*2+2].push_back(u);
            else tab[pos*2+1].push_back(u);
            lst=a;
        }
        daq(pos*2+1,l,mid);
        while(i<=r){
            lst=Query(i);
            st_.insert(i);
            i++;
        }
        daq(pos*2+2,mid+1,r);
    }else{
        for(auto u:tab[pos]){
            int a=Query(u);
            st.insert(u);
            //cout <<"hey"<<" "<<u<<" "<< a <<" "<<lst<<endl;
            if (a>lst) tab[pos*2+2].push_back(u);
            else tab[pos*2+1].push_back(u);
            lst=a;
        }
        daq(pos*2+1,l,mid);
        while(i<=r){
            lst=Query(i);
            st_.insert(i);
            i++;
        }
        daq(pos*2+2,mid+1,r);
    }
    return;
}

void Solve(int N) {
    lst=0;
    for (int i = N+1; i <= 2*N; ++i)
    {
        tab[0].push_back(i);
        lst=Query(i-N);
    }
    daq(0,1,N);
    for (int i = 0; i < ans.size(); ++i)
    {
        Answer(ans[i].first,ans[i].second);
    }
}
#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...