Submission #1224215

#TimeUsernameProblemLanguageResultExecution timeMemory
1224215Muhammad_AneeqFloppy (RMI20_floppy)C++20
28 / 100
28 ms2912 KiB
#include <stdlib.h>
#include <string.h>
#include <cmath>
#include <algorithm>
#include "floppy.h"
using namespace std;
int const MAXN=2e4+10,LG=15;
int mx[MAXN][LG]={};
int get(int l,int r)
{
    int lg=log2(r-l+1);
    return max(mx[l][lg],mx[r+1-(1<<lg)][lg]);
}
void read_array(int subtask_id, const std::vector<int> &V) {
    int n=V.size();
    int lg=log2(n)+1;
    vector<int>x,v;
    for (auto i:V)
        x.push_back(i);
    sort(begin(x),end(x));
    v=x;
    for (int i=0;i<n;i++)
        v[i]=lower_bound(begin(x),end(x),V[i])-begin(x);
    string bits="";
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<lg;j++)
        {
            if ((1<<j)&v[i])
                bits+='1';
            else
                bits+='0';
        }
    }
    save_to_floppy(bits);
}

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>ans;
    vector<int>arr;
    int lg=log2(n)+1;
    for (int i=0;i<n;i++)
    {
        arr.push_back(0);
        for (int j=0;j<lg;j++)
        {
            if (bits[lg*i+j]=='1')
                arr.back()+=(1<<j);
        }
    }
    for (int i=0;i<n;i++)
        mx[i][0]=arr[i];
    for (int i=1;(1<<i)<=n;i++)
        for (int j=0;j+(1<<i)-1<n;j++)
            mx[j][i]=max(mx[j][i-1],mx[j+(1<<(i-1))][i-1]);
    for (int i=0;i<a.size();i++)
    {
        int l,r;
        l=a[i],r=b[i];
        int mx=get(l,r);
        int st=l-1,en=r;
        while (st+1<en)
        {
            int mid=(st+en)/2;
            if (get(l,mid)==mx)
                en=mid;
            else
                st=mid;
        }
        ans.push_back(en);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...