Submission #850619

# Submission time Handle Problem Language Result Execution time Memory
850619 2023-09-17T07:26:29 Z alexdd Floppy (RMI20_floppy) C++17
100 / 100
241 ms 15824 KB
#include<bits/stdc++.h>
#include "floppy.h"
using namespace std;
string cv = "";
string inc = "";
int anc[400005][20];
string get01(int x)
{
    if(x==0)
        return "0";
    string s;
    for(int i=0;i<20;i++)
    {
        if(((1<<i)&x))
            s.push_back('1');
        else
            s.push_back('0');
    }
    while(s[s.size()-1]=='0')
        s.pop_back();
    //cout<<"\n"<<x<<" "<<s<<"  int -> string\n";
    return s;
}
int toint(string s)
{
    int x=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='1')
            x+=(1<<i);
    }
    //cout<<"\n"<<s<<" "<<x<<" string -> int \n";
    return x;
}
void read_array(int subtask_id, const std::vector<int> &v)
{
    deque<int> dq;
    for(int i=0;i<v.size();i++)
    {
        int cnt=0;
        while(!dq.empty() && v[dq.back()]<v[i])
        {
            dq.pop_back();
            cnt++;
        }
        dq.push_back(i);
        string s = "";
        for(int j=0;j<cnt;j++)
            s.push_back('1');
        s.push_back('0');
        cv = cv + s;
    }
    save_to_floppy(cv);
}

vector<int> solve_queries(int subtask_id, int N, const std::string &bits, const std::vector<int> &a, const std::vector<int> &b)
{
    int poz=0, L=(int)bits.size();
    deque<int> dq;
    for(int i=0;i<N;i++)
    {
        int newpoz=L;
        int x=0;
        for(int j=poz;j<L;j++)
        {
            newpoz=j;
            if(bits[j]=='0')
                break;
            x++;
        }
        //cout<<x<<" ";
        for(int j=0;j<x;j++)
            dq.pop_back();
        if(!dq.empty())
            anc[i][0]=dq.back();
        else
            anc[i][0]=i;
        dq.push_back(i);
        poz = newpoz+1;
    }
    for(int p=1;p<20;p++)
        for(int i=0;i<N;i++)
            anc[i][p]=anc[anc[i][p-1]][p-1];
    //cout<<"\n";
    vector<int> ans((int)a.size());
    for(int i=0;i<a.size();i++)
    {
        int cur = b[i];
        for(int p=19;p>=0;p--)
            if(anc[cur][p]>=a[i])
                cur=anc[cur][p];
        ans[i]=cur;
    }
    return ans;
}

Compilation message

floppy.cpp: In function 'int toint(std::string)':
floppy.cpp:27:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(int i=0;i<s.size();i++)
      |                 ~^~~~~~~~~
floppy.cpp: In function 'void read_array(int, const std::vector<int>&)':
floppy.cpp:38:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     for(int i=0;i<v.size();i++)
      |                 ~^~~~~~~~~
floppy.cpp: In function 'std::vector<int> solve_queries(int, int, const string&, const std::vector<int>&, const std::vector<int>&)':
floppy.cpp:86:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |     for(int i=0;i<a.size();i++)
      |                 ~^~~~~~~~~
stub.cpp: In function 'void run2()':
stub.cpp:101:30: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  101 |     if (query_answers.size() != M) {
      |         ~~~~~~~~~~~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 824 KB Output is correct
2 Correct 1 ms 828 KB Output is correct
3 Correct 1 ms 820 KB Output is correct
4 Correct 2 ms 832 KB Output is correct
5 Correct 2 ms 820 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 5812 KB Output is correct
2 Correct 20 ms 5556 KB Output is correct
3 Correct 23 ms 5716 KB Output is correct
4 Correct 20 ms 5452 KB Output is correct
5 Correct 21 ms 5560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 230 ms 15824 KB Output is correct
2 Correct 241 ms 14168 KB Output is correct
3 Correct 135 ms 14404 KB Output is correct
4 Correct 212 ms 15612 KB Output is correct
5 Correct 235 ms 15808 KB Output is correct