Submission #1224310

#TimeUsernameProblemLanguageResultExecution timeMemory
1224310Ghulam_JunaidFloppy (RMI20_floppy)C++20
28 / 100
61 ms2912 KiB
#include <bits/stdc++.h>
#include <stdlib.h>
#include <string.h>
#include "floppy.h"
using namespace std;

void read_array(int subtask_id, const vector<int> &v) {
    string bits;
    int n = v.size();
    int lg = 31 - __builtin_clz(n) + 1;
    
    vector<pair<int, int>> vec;
    for (int i = 0; i < n; i ++)
        vec.push_back({v[i], i});
    sort(vec.begin(), vec.end());

    for (auto [x, i] : vec){
        for (int b = 0; b < lg; b ++){
            if ((1 << b) & i)
                bits += '1';
            else
                bits += '0';
        }
    }

    save_to_floppy(bits);
}

string bits;
int n;
char ask(int i, int j){
    return bits[(j - 1) * n + i];
}

vector<int> solve_queries(int subtask_id, int nn,
        const string &ss,
        const vector<int> &a, const vector<int> &b) {
    bits = ss, n = nn;
    int pos[n];
    int lg = 31 - __builtin_clz(n) + 1;
    
    vector<int> order;
    for (int i = 0; i < n; i ++){
        int ind = 0;
        for (int b = 0; b < lg; b ++)
            if (bits[i * lg + b] == '1')
                ind += 1 << b;
        pos[ind] = order.size();
        order.push_back(ind);
    }

    vector<int> answers;
    for (int i = 0; i < a.size(); i ++){
        int l = a[i], r = b[i];
        int mx = 0;
        for (int j = l; j <= r; j ++)
            mx = max(mx, pos[j]);
        answers.push_back(order[mx]);   
    }
    return answers;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...