Submission #596229

# Submission time Handle Problem Language Result Execution time Memory
596229 2022-07-14T13:43:59 Z Deepesson Event Hopping (BOI22_events) C++17
0 / 100
1500 ms 18064 KB
#include <bits/stdc++.h>
#define MAX 200010
#define LSB(A) (A&(-A))
#define LOG 20
int N,Q;
typedef std::pair<int,int> pii;
std::vector<pii> eventos;

std::vector<int> add[MAX];

std::vector<int> rem[MAX];

int ft[MAX];

typedef std::pair<int,int*> pipo;
int custos[101000];
int trava;

int armazena[MAX];
int valor[MAX];
int jump[MAX][LOG];

void gera_conexoes(){
    for(int i=0;i!=N;++i){
        int max=1e9+1,pep=-1;
        int l = eventos[i].first,r=eventos[i].second;
        for(int i=0;i!=eventos.size();++i){
            auto x = eventos[i];
            if(x.second>=l&&x.second<=r){
                if(x.first<max){
                    max=x.first;
                    pep=i;
                }
            }
        }
        jump[i][0]=pep;
    }
}
int tabp5[5005][5005];
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin>>N>>Q;
    for(int i=0;i!=N;++i){
        int a,b;
        std::cin>>a>>b;
        eventos.push_back({a,b});
    }

    {
        std::vector<pipo> comprime;
        for(auto&x:eventos){
            comprime.push_back({x.first,&x.first});
            comprime.push_back({x.second,&x.second});
        }
        std::sort(comprime.begin(),comprime.end());
        int last=-1,cord=1;
        for(auto&x:comprime){
            if(x.first!=last){
                last=x.first;
                ++cord;
            }
            *x.second=cord;
        }
        trava=cord;
    }
    for(int i=0;i!=N;++i){
        add[eventos[i].first].push_back(i);
        rem[eventos[i].second].push_back(i);
    }
    gera_conexoes();
    for(int i=0;i!=N;++i)if(jump[i][0]==i)jump[i][0]=-1;
   // for(int i=0;i!=N;++i)std::cout<<jump[i][0]<<" \n"[i==N-1];
    for(int j=1;j!=LOG;++j){
        for(int i=0;i!=N;++i){
            if(jump[i][j-1]==-1)jump[i][j]=-1;
            else
            jump[i][j]=jump[jump[i][j-1]][j-1];
        }
    }

    for(int i=0;i!=Q;++i){
        int s,t;
        std::cin>>s>>t;
        --s;--t;
        if(s==t){
            std::cout<<"0\n";
            continue;
        }
        int cord = eventos[s].second;
        int pos = t;
        int dist=0;
        for(int i=LOG-1;i!=-1;--i){
            if(jump[pos][i]!=-1&&eventos[jump[pos][i]].first<=cord){
                dist+=1<<i;
                pos=jump[pos][i];
            }
        }
        if(pos!=s){
            ++dist;
        }
        if(eventos[pos].first<=cord&&eventos[pos].second>=cord){
            std::cout<<dist<<"\n";
        }else std::cout<<"impossible\n";
    }
}

Compilation message

events.cpp: In function 'void gera_conexoes()':
events.cpp:27:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |         for(int i=0;i!=eventos.size();++i){
      |                     ~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 9684 KB Output is correct
2 Execution timed out 1578 ms 18004 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB Output is correct
2 Correct 6 ms 9684 KB Output is correct
3 Incorrect 7 ms 9812 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB Output is correct
2 Correct 6 ms 9684 KB Output is correct
3 Incorrect 7 ms 9812 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9684 KB Output is correct
2 Correct 6 ms 9684 KB Output is correct
3 Incorrect 7 ms 9812 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1564 ms 18064 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 9684 KB Output is correct
2 Execution timed out 1578 ms 18004 KB Time limit exceeded
3 Halted 0 ms 0 KB -