Submission #1284673

#TimeUsernameProblemLanguageResultExecution timeMemory
1284673sopaipillaFloppy (RMI20_floppy)C++20
100 / 100
55 ms4152 KiB
#include <bits/stdc++.h>
#include "floppy.h"
using namespace std;

void read_array(int subtask_id, const vector<int> &v) {
    stack<int> stk;
    while(!stk.empty()) stk.pop();
    string bits="";
    for(int i=0; i<v.size(); ++i) {
        while(!stk.empty() and v[i]>stk.top()) {
            stk.pop();
            bits+="0";
        }
        stk.push(v[i]);
        bits+="1";
    }
    save_to_floppy(bits);
}

#define pii pair<int,int>
#define pb push_back
#define all(x) x.begin(),x.end()

vector<int> solve_queries(int subtask_id, int n,
    const string &bits,
    const vector<int> &a, const vector<int> &b) {
    
    vector<pii> qry[n+1];
    for(int i=0; i<=n; ++i) qry[i]={};
    for(int i=0; i<a.size(); ++i) qry[b[i]].pb({a[i],i});
    vector<int> ans(a.size());
    
    vector<int> stk={};
    int r=-1;
    for(auto &b : bits) {
        if(b=='0') stk.pop_back();
        else stk.pb(++r);

        if(b=='0') continue;
        for(auto &[l,i] : qry[r]) {
            ans[i] = *lower_bound(all(stk),l);
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...