Submission #1286518

#TimeUsernameProblemLanguageResultExecution timeMemory
1286518eri16Obstacles for a Llama (IOI25_obstacles)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int arr1[200005];

int arr2[2][200005];
int arr3[3][200005];
int vis3[3][200005]={0};
int vis2[2][200005]={0};

int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};

int kk=0;

void dfs(int i, int j, int col, int n) {
    if (i < 0 || i >= 2 || j < 0 || j >= n) return;
    if (arr2[i][j]==0) return;
    if (vis[i][j]) return;

    vis[i][j] = 1;
    arr2[i][j] = col;

    for (int z = 0; z < 4; z++) {
        dfs(i + dx[z], j + dy[z], col, n);
    }
}


void initialize(std::vector<int> T, std::vector<int> H){
    
    if (T.size()==1){
        kk=1;
        for (int i=0; i<H.size(); i++){
            arr1[i]=(T[0]>H[i]) ? 1 : 0;
        }
        
        int k=0;
        
        for (int i=0; i<H.size(); i++){
            
            if (arr1[i]==1){arr1[i]=k;}
            else{
                arr1[i]=-1;
                if (i>0){
                    if (arr1[i-1]!=-1){
                        k++;
                    }
                }
            }
        }
    }
    else if (T.size()==3){
        kk=3;
        for (int j=0; j<3; j++){
        for (int i=0; i<H.size(); i++){
            arr2[j][i]=(T[j]>H[i]) ? 1 : 0;
        }}
        
        int k=1;
        
        vis3[0][H.size()]=1;
        vis3[1][H.size()]=1;
        vis3[2][H.size()]=1;
        
        for (int i=0; i<3; i++){
            for (int j=0; j<H.size(); j++){if (vis3[i][j]==0){dfs3(i,j,k,H.size());k++;}
        }}       
    }    
    else{
        kk=2;
        for (int i=0; i<H.size(); i++){
            arr2[0][i]=(T[0]>H[i]) ? 1 : 0;
        }
        
        for (int i=0; i<H.size(); i++){
            arr2[1][i]=(T[T.size()-1]>H[i]) ? 1 : 0;
        }        
        
        int k=1;
        
        vis2[0][H.size()]=1;
        vis2[1][H.size()]=1;
        
        for (int i=0; i<2; i++){
            for (int j=0; j<H.size(); j++){if (vis2[i][j]==0){dfs2(i,j,k,H.size());k++;}
        }}
    }
}


bool can_reach(int L, int R, int S, int D){
    if (kk==0){
        return true;
    }
    if (kk==1){
        if (arr1[S]==arr1[D] && arr1[S]!=-1){return true;}
    }
    if (kk==2){
        if (arr2[0][S]==arr2[0][D] && arr2[0][S]!=0){return true;}        
    }
    if (kk==3){
        if (arr3[0][S]==arr3[0][D] && arr3[0][S]!=0){return true;}        
    }    
    return false;
}

Compilation message (stderr)

obstacles.cpp: In function 'void dfs(int, int, int, int)':
obstacles.cpp:19:9: error: 'vis' was not declared in this scope; did you mean 'vis3'?
   19 |     if (vis[i][j]) return;
      |         ^~~
      |         vis3
obstacles.cpp:21:5: error: 'vis' was not declared in this scope; did you mean 'vis3'?
   21 |     vis[i][j] = 1;
      |     ^~~
      |     vis3
obstacles.cpp: In function 'void initialize(std::vector<int>, std::vector<int>)':
obstacles.cpp:67:63: error: 'dfs3' was not declared in this scope; did you mean 'dfs'?
   67 |             for (int j=0; j<H.size(); j++){if (vis3[i][j]==0){dfs3(i,j,k,H.size());k++;}
      |                                                               ^~~~
      |                                                               dfs
obstacles.cpp:86:63: error: 'dfs2' was not declared in this scope; did you mean 'dfs'?
   86 |             for (int j=0; j<H.size(); j++){if (vis2[i][j]==0){dfs2(i,j,k,H.size());k++;}
      |                                                               ^~~~
      |                                                               dfs