제출 #1284673

#제출 시각아이디문제언어결과실행 시간메모리
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...