답안 #1087314

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1087314 2024-09-12T13:27:36 Z xnqs Bigger segments (IZhO19_segments) C++17
13 / 100
84 ms 10412 KB
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
#include <unordered_map>

const int BULAN = 100;
int x;
int arr[500005];
int64_t pfx[500005];
std::unordered_map<int64_t,std::unordered_map<int,int>> memo;

inline int64_t sum_query(int l, int r) {
	return pfx[r] - pfx[l-1];
}

int solve(int64_t cap, int pos = x) {
	if (memo.count(cap)&&memo[cap].count(pos)) {
		return memo[cap][pos];
	}
	if (pos==0) {
		return 0;
	}
	if (arr[pos]>cap) {
		return -0x3f3f3f3f;
	}

	int i = pos+1;
	int64_t sum = 0;
	int ret = -0x3f3f3f3f;
	int cnt = 0;
	while (i-1>=1&&sum+arr[i-1]<=cap) {
		--i;
		sum += arr[i];

		++cnt;
		if (cnt<=BULAN) {
			ret = std::max(ret,1+solve(sum,i-1));
		}
	}

	ret = std::max(ret,1+solve(sum,i-1));

	return memo[cap][pos] = ret;
}

int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(NULL);
	std::cout.tie(NULL);

	std::cin >> x;
	for (int i = 1; i <= x; i++) {
		std::cin >> arr[i];
		pfx[i] = pfx[i-1] + arr[i];
	}

	/*for (int cap = 1; cap <= 50; cap++) {
		std::cout << cap << " " << solve(cap) << "\n";
	}*/

	const auto bs = [&]() {
		int ret = 1;
		int64_t l = 1, r = 1000000000000000000;
		while (l<=r) {
			int64_t m = (l+r)/2;
			int tmp = solve(m);
			if (tmp!=-0x3f3f3f3f) {
				ret = std::max(ret,tmp);
				r = m-1;
			}
			else {
				l = m+1;
			}
		}
		return ret;
	};

	std::cout << bs() << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 0 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 0 ms 2396 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 0 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 0 ms 2396 KB Output is correct
16 Correct 47 ms 4136 KB Output is correct
17 Correct 42 ms 7860 KB Output is correct
18 Correct 59 ms 8880 KB Output is correct
19 Correct 16 ms 3416 KB Output is correct
20 Correct 44 ms 3816 KB Output is correct
21 Correct 84 ms 10160 KB Output is correct
22 Correct 61 ms 8160 KB Output is correct
23 Correct 31 ms 5980 KB Output is correct
24 Correct 60 ms 3924 KB Output is correct
25 Correct 84 ms 10412 KB Output is correct
26 Correct 70 ms 5200 KB Output is correct
27 Incorrect 45 ms 4204 KB Output isn't correct
28 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 0 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 0 ms 2396 KB Output is correct
16 Correct 47 ms 4136 KB Output is correct
17 Correct 42 ms 7860 KB Output is correct
18 Correct 59 ms 8880 KB Output is correct
19 Correct 16 ms 3416 KB Output is correct
20 Correct 44 ms 3816 KB Output is correct
21 Correct 84 ms 10160 KB Output is correct
22 Correct 61 ms 8160 KB Output is correct
23 Correct 31 ms 5980 KB Output is correct
24 Correct 60 ms 3924 KB Output is correct
25 Correct 84 ms 10412 KB Output is correct
26 Correct 70 ms 5200 KB Output is correct
27 Incorrect 45 ms 4204 KB Output isn't correct
28 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 0 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 0 ms 2396 KB Output is correct
16 Correct 47 ms 4136 KB Output is correct
17 Correct 42 ms 7860 KB Output is correct
18 Correct 59 ms 8880 KB Output is correct
19 Correct 16 ms 3416 KB Output is correct
20 Correct 44 ms 3816 KB Output is correct
21 Correct 84 ms 10160 KB Output is correct
22 Correct 61 ms 8160 KB Output is correct
23 Correct 31 ms 5980 KB Output is correct
24 Correct 60 ms 3924 KB Output is correct
25 Correct 84 ms 10412 KB Output is correct
26 Correct 70 ms 5200 KB Output is correct
27 Incorrect 45 ms 4204 KB Output isn't correct
28 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 0 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 0 ms 2396 KB Output is correct
16 Correct 47 ms 4136 KB Output is correct
17 Correct 42 ms 7860 KB Output is correct
18 Correct 59 ms 8880 KB Output is correct
19 Correct 16 ms 3416 KB Output is correct
20 Correct 44 ms 3816 KB Output is correct
21 Correct 84 ms 10160 KB Output is correct
22 Correct 61 ms 8160 KB Output is correct
23 Correct 31 ms 5980 KB Output is correct
24 Correct 60 ms 3924 KB Output is correct
25 Correct 84 ms 10412 KB Output is correct
26 Correct 70 ms 5200 KB Output is correct
27 Incorrect 45 ms 4204 KB Output isn't correct
28 Halted 0 ms 0 KB -