제출 #290369

#제출 시각아이디문제언어결과실행 시간메모리
290369AaronNaidu철로 (IOI14_rail)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int distFrom0[5001];
int distFromMin[5001];
int queries[5001][5001];
int closest[5001];
int minDists[5001];
bool doneWith[5001];

int getDistance(int i ,int j) {
    cout << "Distance " << i << " " << j << "\n";
    int x;
    cin >> x;
    return x;
}

void findLocation(int n, int first, int location[], int sType[]) {
    location[0] = first;
    sType[0] = 1;
    doneWith[0] = true;
    for (int i = 0; i < n; i++)
    {
        for (int j = i+1; j < n; j++)
        {
            queries[i][j] = getDistance(i,j);
            queries[j][i] = queries[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        minDists[i] = 1000000007;
        for (int j = 0; j < n; j++)
        {
            if (j != i and queries[i][j] < minDists[i])
            {
                minDists[i] = queries[i][j];
                closest[i] = j;
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        cout << closest[i] << " ";
    }
    cout << "\n";
    int otherIndex = closest[0];
    sType[otherIndex] = 2;
    location[otherIndex] = first + queries[0][otherIndex]; 
    doneWith[otherIndex] = true;
    for (int i = 0; i < n; i++)
    {
        if (!doneWith[i])
        {
            if (queries[i][0] < queries[i][otherIndex])
            {
                if (closest[i] == 0 or queries[i][0] < queries[closest[i]][0])
                {
                    sType[i] = 2;
                    location[i] = location[0] + queries[i][0];
                }
                else
                {
                    sType[i] = 1;
                    location[i] = location[0] + queries[i][0] - 2*minDists[i];
                }
                
            }
            else
            {
                if (closest[i] == otherIndex or queries[i][otherIndex] < queries[closest[i]][otherIndex])
                {
                    sType[i] = 1;
                    location[i] = location[otherIndex] - queries[i][otherIndex];
                }
                else
                {
                    sType[i] = 2;
                    location[i] = location[otherIndex] - queries[i][otherIndex] + 2*minDists[i];
                }
            }
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

/tmp/cc3kVdxe.o: In function `main':
grader.cpp:(.text.startup+0x291): undefined reference to `findLocation'
collect2: error: ld returned 1 exit status