답안 #1027419

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1027419 2024-07-19T06:15:07 Z Halym2007 Gap (APIO16_gap) C++17
30 / 100
2000 ms 4804 KB
#include <bits/stdc++.h>
#include "gap.h"
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define sz size()
#define ll long long

long long findGap(int T, int N) {
	ll jog = 0;
	ll l = 0, r = 1e18, mn, mx;
	vector <ll> v;
	if (T == 1) {
		for (int i = 1; i <= (N + 1) / 2; ++i) {
			MinMax(l, r, &mn, &mx);
			v.pb (mn);v.pb (mx);
			l = mn + 1;r = mx - 1;
		}
	}
	else {
		ll n = N;
		ll l = 0, r = 1e18, mn, mx;
		MinMax(l, r, &mn, &mx);
		v.pb (mx);v.pb (mn);
		l = mn + 1;r = mx - 1;
		ll gosh = (r - l + 1 + n - 2) / (n - 1);
		while (l <= r) {
			MinMax (l, min(l + gosh - 1, r), &mn, &mx);
			if (mn == -1 and mx == -1) continue;
			v.pb (mn);v.pb (mx);
			l += gosh;
		}
	}
	sort (v.begin(), v.end());
	for (int i = 0; i < (int)v.sz - 1; ++i) {
		jog = max (jog, v[i + 1] - v[i]);
	}
	return jog;
}


//#include <stdio.h>
//#include <stdlib.h>
//
//
//static void my_assert(int k){ if (!k) exit(1); }
//
//static int subtask_num, N;
//static long long A[100001];
//static long long call_count;
//
//long long findGap(int, int);
//
//void MinMax(long long s, long long t, long long *mn, long long *mx)
//{
//	int lo = 1, hi = N, left = N+1, right = 0;
//	my_assert(s <= t && mn != NULL && mx != NULL);
//	while (lo <= hi){
//		int mid = (lo+hi)>>1;
//		if (A[mid] >= s) hi = mid - 1, left = mid;
//		else lo = mid + 1;
//	}
//	lo = 1, hi = N;
//	while (lo <= hi){
//		int mid = (lo+hi)>>1;
//		if (A[mid] <= t) lo = mid + 1, right = mid;
//		else hi = mid - 1;
//	}
//	if (left > right) *mn = *mx = -1;
//	else{
//		*mn = A[left];
//		*mx = A[right];
//	}
//	if (subtask_num == 1) call_count++;
//	else if (subtask_num == 2) call_count += right-left+2;
//}
//
//int main()
//{
//	FILE *in = stdin, *out = stdout;
//	my_assert(2 == fscanf(in, "%d%d", &subtask_num, &N));
//	my_assert(1 <= subtask_num && subtask_num <= 2);
//	my_assert(2 <= N && N <= 100000);
//	for (int i=1;i<=N;i++) my_assert(1 == fscanf(in, "%lld", A+i));
//	for (int i=1;i<N;i++) my_assert(A[i] < A[i+1]);
//	fprintf(out, "%lld\n", findGap(subtask_num, N));
//	fprintf(out, "%lld\n", call_count);
//}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 1 ms 2392 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 0 ms 344 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 344 KB Output is correct
13 Correct 1 ms 344 KB Output is correct
14 Correct 1 ms 2392 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 8 ms 960 KB Output is correct
17 Correct 9 ms 976 KB Output is correct
18 Correct 9 ms 980 KB Output is correct
19 Correct 10 ms 892 KB Output is correct
20 Correct 8 ms 980 KB Output is correct
21 Correct 34 ms 3964 KB Output is correct
22 Correct 39 ms 2172 KB Output is correct
23 Correct 35 ms 2296 KB Output is correct
24 Correct 37 ms 2384 KB Output is correct
25 Correct 34 ms 2200 KB Output is correct
26 Correct 35 ms 2268 KB Output is correct
27 Correct 38 ms 2164 KB Output is correct
28 Correct 38 ms 3764 KB Output is correct
29 Correct 31 ms 2256 KB Output is correct
30 Correct 28 ms 3792 KB Output is correct
31 Correct 0 ms 2392 KB Output is correct
32 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3034 ms 344 KB Time limit exceeded
2 Execution timed out 3067 ms 344 KB Time limit exceeded
3 Execution timed out 3007 ms 344 KB Time limit exceeded
4 Execution timed out 3049 ms 344 KB Time limit exceeded
5 Execution timed out 3082 ms 344 KB Time limit exceeded
6 Execution timed out 3084 ms 344 KB Time limit exceeded
7 Execution timed out 3043 ms 344 KB Time limit exceeded
8 Execution timed out 3078 ms 2392 KB Time limit exceeded
9 Execution timed out 3064 ms 2392 KB Time limit exceeded
10 Execution timed out 3065 ms 2392 KB Time limit exceeded
11 Execution timed out 3072 ms 344 KB Time limit exceeded
12 Execution timed out 3035 ms 2392 KB Time limit exceeded
13 Execution timed out 3075 ms 2392 KB Time limit exceeded
14 Execution timed out 3063 ms 2392 KB Time limit exceeded
15 Execution timed out 3046 ms 2392 KB Time limit exceeded
16 Execution timed out 3040 ms 600 KB Time limit exceeded
17 Execution timed out 3056 ms 600 KB Time limit exceeded
18 Execution timed out 3087 ms 2392 KB Time limit exceeded
19 Execution timed out 3062 ms 2392 KB Time limit exceeded
20 Execution timed out 3035 ms 2392 KB Time limit exceeded
21 Execution timed out 3049 ms 2648 KB Time limit exceeded
22 Execution timed out 3062 ms 2648 KB Time limit exceeded
23 Execution timed out 3024 ms 2648 KB Time limit exceeded
24 Execution timed out 3024 ms 2648 KB Time limit exceeded
25 Execution timed out 3064 ms 4804 KB Time limit exceeded
26 Execution timed out 3058 ms 2648 KB Time limit exceeded
27 Execution timed out 3038 ms 2648 KB Time limit exceeded
28 Execution timed out 3024 ms 2648 KB Time limit exceeded
29 Execution timed out 3033 ms 2648 KB Time limit exceeded
30 Execution timed out 3075 ms 2904 KB Time limit exceeded
31 Execution timed out 3065 ms 2392 KB Time limit exceeded
32 Execution timed out 3087 ms 2388 KB Time limit exceeded