Submission #1363820

#TimeUsernameProblemLanguageResultExecution timeMemory
1363820activedeltorreSphinx's Riddle (IOI24_sphinx)C++20
Compilation error
0 ms0 KiB
#include "sphinx.h"
#include <cassert>
#include <cstdio>
#include <queue>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

namespace
{

const int CALLS_CNT_LIMIT = 2750;

int calls_cnt;

int N, M;
std::vector<int> C;
std::vector<int> X, Y;
std::vector<std::vector<int>> adj;

void quit(const char* message)
{
    printf("%s\n", message);
    exit(0);
}

int count_components(const std::vector<int>& S)
{
    int components_cnt = 0;
    std::vector<bool> vis(N, false);
    for (int i = 0; i < N; i++)
    {
        if (vis[i])
            continue;
        components_cnt++;

        std::queue<int> q;
        vis[i] = true;
        q.push(i);
        while (!q.empty())
        {
            int cur = q.front();
            q.pop();
            for (int nxt : adj[cur])
                if (!vis[nxt] && S[nxt] == S[cur])
                {
                    vis[nxt] = true;
                    q.push(nxt);
                }
        }
    }
    return components_cnt;
}

} // namespace

int perform_experiment(std::vector<int> E)
{
    calls_cnt++;
    if (calls_cnt > CALLS_CNT_LIMIT)
        quit("Too many calls");
    if ((int)E.size() != N)
        quit("Invalid argument");
    for (int i = 0; i < N; i++)
        if (!(-1 <= E[i] && E[i] <= N))
            quit("Invalid argument");

    std::vector<int> S(N);
    for (int i = 0; i < N; i++)
        S[i] = (E[i] == -1 ? C[i] : E[i]);

    return count_components(S);
}
vector<int>make(int n,int poz,int val)
{
    std::vector<int> E(n);
    for(int i=0;i<n;i++)
    {
        E[i]=val;
    }
    E[poz]=-1;
    return E;
}

std::vector<int> find_colours(int N, std::vector<int> X, std::vector<int> Y)
{
    std::vector<int> E(N, -1);
    vector<int>rasp(N);
    int n=N;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            int rez=perform_experiment(make(N,i,j));
            if(rez==1)
            {
                rasp[i]=j;
            }
        }
    }
    return rasp;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccB99nnW.o: in function `perform_experiment(std::vector<int, std::allocator<int> >)':
stub.cpp:(.text+0x190): multiple definition of `perform_experiment(std::vector<int, std::allocator<int> >)'; /tmp/ccPwOPiM.o:sphinx.cpp:(.text+0x150): first defined here
collect2: error: ld returned 1 exit status