제출 #1204482

#제출 시각아이디문제언어결과실행 시간메모리
1204482Trn115파일 삭제 (GA3_delete)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>

#define int long long
#define fi first
#define se second
#define all(x) x.begin(), x.end()

using namespace std;

constexpr int inf = 1e18;

int DeletePlan( int N, int M, int K, int *A, int *B) {
	int n = N + M;
	vector<vector<int>> g(n);
	for (int i = 0; i < N; ++i) {
		g[A[i] + N].push_back(i);
	}
	for (int i = 1; i < M; ++i) {
		g[B[i] + N].push_back(i + N);
	}

	vector<int> num(n), tail(n), euler(n + 1);
	vector<vector<int>> back(n + 1);
	int timer = 0;
	function<void(int)> dfs = [&](int v) {
		num[v] = tail[v] = ++timer;
		euler[timer] = v;
		for (int u : g[v]) dfs(u);
		tail[v] = timer;
		back[tail[v]].push_back(num[v]);
	};
	dfs(N);

	vector<int> pref(n + 1);
	for (int i = 1; i <= n; ++i) pref[i] = pref[i - 1] + (euler[i] < N);

	vector<vector<int>> dp(n + 1, vector<int>(K + 1, inf));
	for (int i = 0; i <= n; ++i) dp[i][0] = 0;
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= K; ++j) {
			dp[i][j] = dp[i - 1][j];
			for (int x : back[i]) {
				int val = pref[i] - pref[x - 1];
				if (val > j) continue;
				dp[i][j] = min(dp[i][j], dp[x - 1][j - val] + 1);
			}
		}
	}
	
	return dp[n][K];
}

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

/usr/bin/ld: /tmp/ccd0oFUS.o: in function `main':
grader.cpp:(.text.startup+0xf9): undefined reference to `DeletePlan(int, int, int, int*, int*)'
collect2: error: ld returned 1 exit status