Submission #1294865

#TimeUsernameProblemLanguageResultExecution timeMemory
1294865WH8Floppy (RMI20_floppy)C++20
100 / 100
56 ms3892 KiB
#include <stdlib.h>
#include <string.h>
#include "floppy.h"
#include <bits/stdc++.h>
using namespace std;

void read_array(int subtask_id, const vector<int> &v) {
	stack<int> s;
	int n=v.size();
	string bits="";
	for(int i=0;i<n;i++){
		while(!s.empty() and s.top() < v[i]){
			s.pop();
			bits+="0";
		}
		bits+="1";
		s.push(v[i]);
	}
	//~ cout<<bits<<endl;
    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<vector<int>> qs(N);
	int q=a.size();
	for(int i=0;i<q;i++){
		qs[b[i]].push_back(i);
	}
	vector<int> v, ret(q, -1);
	int cnt=-1;
	for(int i=0;i<(int)bits.size();i++){
		if(bits[i]=='1'){
			cnt++;
			v.push_back(cnt);
			for(auto qind : qs[cnt]){
				int ans=*lower_bound(v.begin(),v.end(),a[qind]);
				ret[qind]=ans;
			}
		}
		else {
			assert(!v.empty());
			v.pop_back();
		}
	}
    return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...