제출 #1362879

#제출 시각아이디문제언어결과실행 시간메모리
1362879MateiKing80Teleporter 2 (JOI26_teleporter)C++20
0 / 100
1 ms344 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;
using ll = long long;
vector<pair<int, int>> vp[N];
int n, m, k;

int answer(int lambda) {
	ll rasp = 0;
	int last = 0, cst = 0, ans = 0;
	for (int i = 1; i <= n; i ++) {
		for (auto j : vp[i]) {
			if (j.first > last) {
				cst += j.second;
				if (j.second < 0) {
					rasp += -j.second;
				}
			}
		}
		if (cst >= lambda && ans < k) {
			last = i;
			cst = 0;
			ans ++;
		}
	}
	return rasp;
}

int greedy(int lambda) {
	int last = 0, cst = 0, ans = 0;
	for (int i = 1; i <= n; i ++) {
		for (auto j : vp[i]) {
			if (j.first > last) {
				cst += j.second;
			}
		}
		if (cst >= lambda) {
			last = i;
			cst = 0;
			ans ++;
		}
	}
	return ans;
}

signed main() {
	cin >> n >> m >> k;
	for (int i = 0; i < m; i ++) {
		int s, t, c;
		cin >> s >> t >> c;
		vp[s].push_back({t, c});
		vp[t].push_back({s, -c});
	}
	int lambda = 0;
	for (int pas = 1 << 30; pas; pas >>= 1) {
		if (greedy(lambda + pas) >= k) {
			lambda += pas;
		}
	}
	cout << answer(lambda) << '\n';
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…