# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
640835 | Vladth11 | Floppy (RMI20_floppy) | C++14 | 95 ms | 22572 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "floppy.h"
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
using namespace std;
typedef long long ll;
typedef pair <ll, ll> pii;
typedef pair <long double, pii> muchie;
const ll NMAX = 200001;
const ll VMAX = 101;
const ll INF = 2e9;
const ll MOD = 1000000007;
const ll BLOCK = 447;
const ll base = 117;
const ll nr_of_bits = 17;
const ll inv2 = 500000004;
int stiva[NMAX];
vector <pii> events[NMAX];
std::vector<int> solve_queries(int subtask_id, int N,
const std::string &bits,
const std::vector<int> &a, const std::vector<int> &b) {
vector <int> answers(a.size());
for(int i = 0; i < a.size(); i++){
events[b[i]].push_back({a[i], i});
}
int j = 0, vf = 0;
for(int i = 0; i < N; i++){
while(bits[j] == '0'){
vf--;
j++;
}
stiva[++vf] = i;
j++;
for(auto x : events[i]){
int r = vf, pas = (1 << nr_of_bits);
while(pas){
if(r - pas >= 1 && stiva[r - pas] >= x.first){
r -= pas;
}
pas /= 2;
}
answers[x.second] = stiva[r];
}
}
return answers;
}
void read_array(int subtask_id, const std::vector<int> &v) {
stack <int> st;
string s = "";
int i = 0;
for(auto x : v){
while(st.size() && v[st.top()] < x){
s += '0';
st.pop();
}
st.push(i);
i++;
s += '1';
}
save_to_floppy(s);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |