제출 #1210177

#제출 시각아이디문제언어결과실행 시간메모리
1210177thangdz2k7추월 (IOI23_overtaking)C++20
컴파일 에러
0 ms0 KiB
#include "overtaking.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int MAX = 1e3; long long n, m, x; long long timer[MAX][MAX], ans[MAX][MAX], f[MAX]; pair <long long, long long> buses[MAX]; vector <long long> s; void init(long long L, long long N, vector <ll> T, vector <long long> W, long long X, long long M, vector <long long> S){ n = 0, m = M, x = X; s = S; for (int i = 0; i < m; ++ i) f[i] = x * s[i]; for (long long i = 0; i < N; ++ i) if (W[i] > X) buses[n ++] = make_pair(T[i], W[i]); if (n == 0) return; sort(buses, buses + n); for (long long i = 0; i < n; ++ i) timer[0][i] = buses[i].first; for (long long i = 1; i < m; ++ i){ for (long long j = 0; j < n; ++ j){ buses[j].first += (S[i] - S[i - 1]) * buses[j].second; if (j) buses[j].first = max(buses[j].first, buses[j - 1].first); } sort(buses, buses + n); for (long long j = 0; j < n; ++ j) timer[i][j] = buses[j].first; } for (long long i = 0; i < n; ++ i) ans[m - 1][i] = timer[m - 1][i]; for (long long i = m - 2; i >= 0; -- i){ ans[i][0] = timer[i][0] + (s[m - 1] - s[i]) * x; for (long long j = 1; j < n; ++ j){ if (timer[i][j] == timer[i][j - 1]){ ans[i][j] = ans[i][j - 1]; continue; } long long tmp = timer[i][j] + (s[m - 1] - s[i]) * x; if (tmp >= timer[m - 1][j - 1]){ ans[i][j] = tmp; continue; } long long low = i + 1, high = m - 1; while (low < high){ long long mid = low + high >> 1; long long tmp = timer[i][j] + (s[mid] - s[i]) * x; if (tmp <= timer[mid][j - 1]) high = mid; else low = mid + 1; } ans[i][j] = ans[low][j - 1]; } } } long long arrival_time(long long Y){ long long tmp = Y + f[m - 1]; if (n == 0 || Y <= timer[0][0]) return tmp; long long low = 1, high = n; while (low < high){ long long mid = low + high >> 1; if (timer[0][mid] >= Y) high = mid; else low = mid + 1; } long long i = low - 1; if (timer[m - 1][i] <= tmp) return tmp; low = 1, high = m - 1; while (low < high){ long long mid = low + high >> 1; long long tmp = Y + f[mid]; if (tmp <= timer[mid][i]) high = mid; else low = mid + 1; } return ans[low][i]; }

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

/usr/bin/ld: /tmp/cc1BHZ5j.o: in function `main':
grader.cpp:(.text.startup+0x468): undefined reference to `init(int, int, std::vector<long long, std::allocator<long long> >, std::vector<int, std::allocator<int> >, int, int, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status