Submission #1260657

#TimeUsernameProblemLanguageResultExecution timeMemory
1260657truongdz_top12Obstacles for a Llama (IOI25_obstacles)C++20
0 / 100
2111 ms1628504 KiB
#include "obstacles.h"
#include<bits/stdc++.h>
using namespace std;
const int dx[]={-1,0,1,0};
const int dy[]={0,-1,0,1};
int N,M;
vector<vector<int>>G;
bool ok(int x,int y,int L,int R){return L<=y&&y<=R&&0<=x&&x<N;}
void initialize(vector<int>T,vector<int>H)
{
    N=T.size();
    M=H.size();
    G.assign(N,{});
    for(int i=0;i<T.size();++i)
        for(int j=0;j<H.size();++j)
            G[i].push_back(T[i]<=H[j]);
}
bool can_reach(int L,int R,int S,int D)
{
    vector<vector<int>>d(N,vector<int>(M,-1));
    d[0][S]=0;
    queue<pair<int,int>>qu;
    qu.push({0,S});
    while(!qu.empty())
    {
        auto[x,y]=qu.front();
        qu.pop();
        for(int i=0;i<4;++i)
        {
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(ok(nx,ny,L,R)&&d[nx][ny]==-1)
                if(!G[nx][ny])
                {
                    d[nx][ny]=d[x][y]+1;
                    qu.push({nx,ny});
                }
        }
    }
    return d[0][D]!=-1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...