Submission #1300002

#TimeUsernameProblemLanguageResultExecution timeMemory
1300002georgeckitoObstacles for a Llama (IOI25_obstacles)C++20
24 / 100
68 ms7428 KiB
#include <bits/stdc++.h>
#include "obstacles.h"
using namespace std;
int ps[200'000];
int N, M;
bool sub2 = true;

int parent[600'000];
int sz[600'000];

void make_set(int v)
{
    parent[v] = v;
    sz[v] = 1;
}

void init(int n)
{
    for (int i = 0; i <= n; i++)
    {
        make_set(i);
    }
}

int find_set(int v)
{
    if (v == parent[v])
        return v;

    parent[v] = find_set(parent[v]);
    return parent[v];
}

void union_sets(int a, int b)
{
    int a1 = find_set(a);
    int b1 = find_set(b);
    if (a1 != b1)
    {
        if (sz[a1] < sz[b1])
            swap(a1, b1);
        parent[b1] = a1;
        sz[a1] += sz[b1];
    }
}

void initialize(std::vector<int> T, std::vector<int> H)
{
    N = T.size();
    M = H.size();
    if (N == 1)
    {
        int t = T[0];
        ps[0] = (t > H[0] ? 0 : 1);
        for (int i = 1; i < H.size(); i++)
            ps[i] = ps[i - 1] + (t > H[i] ? 0 : 1);
        return;
    }
    for (int i = 1; i < N; i++)
    {
        if (T[i] < T[i - 1])
            sub2 = false;
    }
    if (sub2)
    {
        int t = T[N - 1];
        ps[0] = (t > H[0] ? 0 : 1);
        for (int i = 1; i < H.size(); i++)
            ps[i] = ps[i - 1] + (t > H[i] ? 0 : 1);
        return;
    }
}

bool can_reach(int L, int R, int S, int D)
{
    if (N == 1 || sub2)
    {
        return ps[max(S, D)] - ps[min(S, D)] == 0;
    }
}

Compilation message (stderr)

obstacles.cpp: In function 'bool can_reach(int, int, int, int)':
obstacles.cpp:80:1: warning: control reaches end of non-void function [-Wreturn-type]
   80 | }
      | ^
#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...