Submission #1183064

#TimeUsernameProblemLanguageResultExecution timeMemory
11830648pete8Floppy (RMI20_floppy)C++20
100 / 100
60 ms5080 KiB
#include <stdlib.h>
#include <string.h>
#include<bits/stdc++.h>
#include "floppy.h"
using namespace std;
#define pii pair<int,int>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define s second
#define f first
void read_array(int subtask_id, const vector<int> &v){
    string ans="";
    stack<int>st;
    for(int i=v.size()-1;i>=0;i--){
        while(!st.empty()&&v[st.top()]<=v[i])st.pop(),ans+='1';
        ans+='0';
        st.push(i);
    }
    save_to_floppy(ans);
}
int nxt[18][100000];
vector<int> solve_queries(int subtask_id, int n,const string &bits,const vector<int> &a, const vector<int> &b) {
    stack<int>st;
    int c=0;
    for(int i=n-1;i>=0;i--){
        while(bits[c]=='1'){
            st.pop();
            c++;
        }
        if(!st.empty())nxt[0][i]=st.top();
        else nxt[0][i]=n;
        
        st.push(i);
        c++;
    }
    vector<int>ans;
    for(int i=0;i<18;i++)nxt[i][n]=n;
    for(int j=1;j<18;j++){
        for(int i=0;i<n;i++)nxt[j][i]=nxt[j-1][nxt[j-1][i]];
    }
    for(int i=0;i<a.size();i++){
        int cur=a[i];
        for(int j=17;j>=0;j--)if(nxt[j][cur]<=b[i])cur=nxt[j][cur];
        ans.pb(cur);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...