답안 #571336

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
571336 2022-06-01T20:06:24 Z sidon 치료 계획 (JOI20_treatment) C++17
4 / 100
740 ms 129536 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int INF = 1e18;

signed main() {
	ios::sync_with_stdio(0), cin.tie(0);
	int N, M; cin >> N >> M;

	array<int, 4> a[M];
	int c[M], p {};

	for(auto &[R, L, T, C] : a) {
		cin >> T >> L >> R >> C;
		c[p++] = T;
	}

	sort(a, a + M);
	sort(c, c + M);
	
	set<array<int, 2>> s[2][M + 1];
	int ans = INF;

	for(auto [R, L, T, C] : a) {
		int cur = L < 2 ? 0 : INF, t = lower_bound(c, c + M, T) - c;

		for(int i = 0; i < 2; ++i) {
			int f = L + (i ? T : -T) - 1;

			for(int k = (i ? t + 1 : M - t); k > 0; k -= k&-k) {
				if(!empty(s[i][k]) && f <= (*--end(s[i][k]))[0])
					cur = min(cur, (*s[i][k].lower_bound({f}))[1]);
			}
		}
		cur = min(cur + C, INF);

		if(R == N) ans = min(ans, cur);

		for(int i = 0; i < 2; ++i) {
			int f = R + (i ? T : -T);

			for(int k = (i ? t + 1 : M - t); k <= M; k += k&-k) {

				auto j = s[i][k].insert({f, cur}).first;

				if(next(j) != end(s[i][k]) && (*next(j))[1] <= cur)
					s[i][k].erase(j);
				else {
					while(j != begin(s[i][k]) && (*prev(j))[1] >= cur)
						s[i][k].erase(prev(j));
				}
			}
		}
	}

	cout << (ans == INF ? -1 : ans);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 740 ms 129536 KB Output is correct
2 Correct 581 ms 62396 KB Output is correct
3 Correct 546 ms 72172 KB Output is correct
4 Correct 549 ms 72288 KB Output is correct
5 Correct 493 ms 18136 KB Output is correct
6 Correct 408 ms 18928 KB Output is correct
7 Correct 482 ms 38196 KB Output is correct
8 Correct 263 ms 17840 KB Output is correct
9 Correct 151 ms 16816 KB Output is correct
10 Correct 116 ms 16744 KB Output is correct
11 Correct 432 ms 73028 KB Output is correct
12 Correct 425 ms 73424 KB Output is correct
13 Correct 273 ms 17596 KB Output is correct
14 Correct 238 ms 17628 KB Output is correct
15 Correct 373 ms 20044 KB Output is correct
16 Correct 332 ms 20288 KB Output is correct
17 Correct 329 ms 17708 KB Output is correct
18 Correct 149 ms 16016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 740 ms 129536 KB Output is correct
2 Correct 581 ms 62396 KB Output is correct
3 Correct 546 ms 72172 KB Output is correct
4 Correct 549 ms 72288 KB Output is correct
5 Correct 493 ms 18136 KB Output is correct
6 Correct 408 ms 18928 KB Output is correct
7 Correct 482 ms 38196 KB Output is correct
8 Correct 263 ms 17840 KB Output is correct
9 Correct 151 ms 16816 KB Output is correct
10 Correct 116 ms 16744 KB Output is correct
11 Correct 432 ms 73028 KB Output is correct
12 Correct 425 ms 73424 KB Output is correct
13 Correct 273 ms 17596 KB Output is correct
14 Correct 238 ms 17628 KB Output is correct
15 Correct 373 ms 20044 KB Output is correct
16 Correct 332 ms 20288 KB Output is correct
17 Correct 329 ms 17708 KB Output is correct
18 Correct 149 ms 16016 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Incorrect 0 ms 212 KB Output isn't correct
21 Halted 0 ms 0 KB -