Submission #1300180

#TimeUsernameProblemLanguageResultExecution timeMemory
1300180FaggiRail (IOI14_rail)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define ll long long
#define all(x) x.begin(), x.end()
#define sz(x) int(x.size())
#define pb push_back
#define fr first
#define se second
#define mp make_pair
using namespace std;

int getDistance(int x, int y);

const int MAXN=5001;

ll memo[MAXN][MAXN];

int getD(int x, int y)
{
    if(memo[x][y])
        return memo[x][y]-1;
    memo[y][x]=memo[x][y]=getDistance(x, y)+1;
    return memo[x][y]-1;
}

const int MAXM=1e6+1;

ll tip[MAXM];

void findLocation(int N, int first, int location[], int stype[])
{
    ll i, l = 0, r, a, b, r1, nod, mid;

    auto reg = [&](ll v1, ll v2, ll v3)
    {
        stype[v1]=v2;
        tip[v3]=v2;
        location[v1]=v3;
    };
    reg(0,1,first);
    if (N == 1)
        return;
    vector<ll> dist(N, 0);
    vector<pair<ll, ll>> v;
    for (i = 1; i < N; i++)
    {
        dist[i] = getD(0, i);
        v.pb({dist[i], i});
    }
    sort(all(v));
    reverse(all(v));
    r = v.back().se;
    r1 = r;
    v.pop_back();
    reg(r,2,location[0] + dist[r]);

    pair<ll,ll>ans1,ans2;
    while (sz(v))
    {
        nod = v.back().se;
        v.pop_back();
        a=location[0]+dist[nod];
        b=location[r]-getD(nod,r);
        mid=(a+b);
        if(tip[mid/2]==2)
            ans1={b,1};
        else
            ans1={a,2};
        a=location[0]-dist[nod]+dist[r1]*2;
        b=location[l]+getD(nod,l);
        mid=(a+b);
        if(tip[mid/2]==1)
            ans2={b,2};
        else
            ans2={a,1};

        if(getD(nod,r)==location[r]-a)
            reg(nod,ans2.se,ans2.fr);
        else
            reg(nod,ans1.se,ans1.fr);
        if(location[nod]<location[l])
            l=nod;
        if(location[nod]>location[r])
            r=nod;
    }
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccvXfYoo.o: in function `getD(int, int)':
rail.cpp:(.text+0x501): undefined reference to `getDistance(int, int)'
/usr/bin/ld: /tmp/ccvXfYoo.o: in function `findLocation(int, int, int*, int*)':
rail.cpp:(.text+0x64a): undefined reference to `getDistance(int, int)'
/usr/bin/ld: rail.cpp:(.text+0x787): undefined reference to `getDistance(int, int)'
/usr/bin/ld: rail.cpp:(.text+0x8a7): undefined reference to `getDistance(int, int)'
/usr/bin/ld: rail.cpp:(.text+0x96a): undefined reference to `getDistance(int, int)'
/usr/bin/ld: /tmp/ccgAd6Hv.o: in function `main':
grader.cpp:(.text.startup+0x29c): undefined reference to `findLocation'
collect2: error: ld returned 1 exit status