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...