Submission #1252529

#TimeUsernameProblemLanguageResultExecution timeMemory
1252529NekoRollyObstacles for a Llama (IOI25_obstacles)C++20
23 / 100
64 ms12104 KiB
#include "obstacles.h"
#include<bits/stdc++.h>
using namespace std;

const int N = 6e5+4;

struct Dsu{
    int t[N];

    void build(int n){
        for (int i=0; i<n; i++)
            t[i] = i;
    }

    int find(int x){
        if (x == t[x]) return x;
        return t[x] = find(t[x]);
    }

    void join(int a,int b){
        t[find(a)] = find(b);
    }
} dsu;

int n,m;

void initialize(vector<int> T,vector<int> H){
    n = T.size(), m = H.size();
    dsu.build(n*m);
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++){
            if (T[i] <= H[j]) continue;
            if (i+1<n && T[i+1] > H[j])
                dsu.join(i*m+j, i*m+m+j);
            if (j+1<m && T[i] > H[j+1])
                dsu.join(i*m+j, i*m+j+1);
        }
}

bool can_reach(int L, int R, int S, int D) {
    return dsu.find(S) == dsu.find(D);
}
#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...