Submission #1264471

#TimeUsernameProblemLanguageResultExecution timeMemory
1264471SofiatpcFloppy (RMI20_floppy)C++20
100 / 100
57 ms3912 KiB
#include <bits/stdc++.h> #include "floppy.h" using namespace std; #define fi first #define sc second void read_array(int subtask_id, const vector<int> &v) { string bits; stack<int> st; for(int i = 0; i < v.size(); i++){ while(st.size() > 0 && v[st.top()] < v[i]){ bits.push_back('0'); st.pop(); } bits.push_back('1'); st.push(i); } save_to_floppy(bits); } vector<int> solve_queries(int subtask_id, int N, const string &bits, const vector<int> &a, const vector<int> &b) { vector< pair< pair<int,int>, int > > q; // b a i for(int i = 0; i < a.size(); i++)q.push_back({ { b[i], a[i]}, i}); sort(q.begin(),q.end()); vector<int> answers; answers.resize(a.size()); int cur = 0, id = 0; vector<int> st; for(int i = 0; i < bits.size(); i++){ if(bits[i] == '0')st.pop_back(); else{ st.push_back(id); while( cur < q.size() && q[cur].fi.fi == id){ int x = lower_bound(st.begin(),st.end(),q[cur].fi.sc)-st.begin(); answers[ q[cur].sc ] = st[x]; cur++; } id++; } } return answers; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...