답안 #916064

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
916064 2024-01-25T08:26:08 Z GrindMachine Gap (APIO16_gap) C++17
10.2465 / 100
233 ms 3108 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long int ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL)
#define pb push_back
#define endl '\n'
#define sz(a) (int)a.size()
#define setbits(x) __builtin_popcountll(x)
#define ff first
#define ss second
#define conts continue
#define ceil2(x,y) ((x+y-1)/(y))
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define yes cout << "Yes" << endl
#define no cout << "No" << endl

#define rep(i,n) for(int i = 0; i < n; ++i)
#define rep1(i,n) for(int i = 1; i <= n; ++i)
#define rev(i,s,e) for(int i = s; i >= e; --i)
#define trav(i,a) for(auto &i : a)

template<typename T>
void amin(T &a, T b) {
    a = min(a,b);
}

template<typename T>
void amax(T &a, T b) {
    a = max(a,b);
}

#ifdef LOCAL
#include "debug.h"
#else
#define debug(x) 42
#endif

/*

read some solutions a long time ago, slightly remember some ideas
may have still solved it if not for those ideas

*/

const int MOD = 1e9 + 7;
const int N = 1e5 + 5;
const int inf1 = int(1e9) + 5;
const ll inf2 = ll(1e18) + 5;
const int B = 90;

#include "gap.h"

ll go(ll l, ll r){
	if(l >= r) return 0;

	// split into B segs
	ll len = r-l+1;
	ll cnt1 = B;
	ll cnt2 = len%B;
	cnt1 -= cnt2;

	vector<pll> segs;
	ll ptr = l;

	rep1(i,cnt1){
		if(len >= B){
			segs.pb({ptr,ptr+len/B-1});
		}
		ptr += len/B;
	}

	rep1(i,cnt2){
		segs.pb({ptr,ptr+ceil2(len,B)-1});
		ptr += ceil2(len,B);
	}

	// cout << "l = " << l << endl;
	// cout << "r = " << r << endl;
	// for(auto [lx,rx] : segs){
	// 	cout << lx << " " << rx << endl;
	// }

	assert(ptr == r+1);

	vector<pll> seg_vals;
	ll ans = 0;

	rep(i,sz(segs)){
		ll mn,mx;
		auto [lx,rx] = segs[i];
		MinMax(lx,rx,&mn,&mx);
		seg_vals.pb({mn,mx});
		if(mn != mx){
			amax(ans,go(lx,rx));
		}
	}

	ll last_active = -1;

	for(auto [mn,mx] : seg_vals){
		if(mn != -1){
			if(last_active != -1){
				amax(ans,mn-last_active);
			}
			last_active = mx;
		}
	}

	return ans;
}

long long findGap(int T, int n)
{
	return go(0,1e18);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Incorrect 1 ms 2392 KB Output isn't correct
3 Incorrect 1 ms 2392 KB Output isn't correct
4 Incorrect 1 ms 2392 KB Output isn't correct
5 Incorrect 1 ms 2392 KB Output isn't correct
6 Incorrect 1 ms 2392 KB Output isn't correct
7 Incorrect 1 ms 2392 KB Output isn't correct
8 Incorrect 1 ms 2392 KB Output isn't correct
9 Incorrect 1 ms 2392 KB Output isn't correct
10 Incorrect 1 ms 2392 KB Output isn't correct
11 Incorrect 3 ms 2392 KB Output isn't correct
12 Incorrect 3 ms 2388 KB Output isn't correct
13 Incorrect 3 ms 2392 KB Output isn't correct
14 Incorrect 3 ms 2392 KB Output isn't correct
15 Incorrect 1 ms 2392 KB Output isn't correct
16 Incorrect 83 ms 2580 KB Output isn't correct
17 Incorrect 83 ms 2584 KB Output isn't correct
18 Incorrect 84 ms 2604 KB Output isn't correct
19 Incorrect 86 ms 2592 KB Output isn't correct
20 Incorrect 13 ms 2620 KB Output isn't correct
21 Incorrect 215 ms 2872 KB Output isn't correct
22 Incorrect 212 ms 3100 KB Output isn't correct
23 Incorrect 211 ms 2868 KB Output isn't correct
24 Incorrect 207 ms 3092 KB Output isn't correct
25 Incorrect 42 ms 3108 KB Output isn't correct
26 Incorrect 211 ms 3004 KB Output isn't correct
27 Incorrect 208 ms 2888 KB Output isn't correct
28 Incorrect 211 ms 2860 KB Output isn't correct
29 Incorrect 208 ms 3108 KB Output isn't correct
30 Incorrect 52 ms 2852 KB Output isn't correct
31 Incorrect 1 ms 2392 KB Output isn't correct
32 Incorrect 1 ms 2548 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 2392 KB Partially correct
2 Partially correct 1 ms 2392 KB Partially correct
3 Partially correct 1 ms 2392 KB Partially correct
4 Partially correct 1 ms 2392 KB Partially correct
5 Partially correct 1 ms 2392 KB Partially correct
6 Partially correct 1 ms 2392 KB Partially correct
7 Partially correct 1 ms 2392 KB Partially correct
8 Partially correct 1 ms 2392 KB Partially correct
9 Partially correct 1 ms 2392 KB Partially correct
10 Partially correct 1 ms 2392 KB Partially correct
11 Partially correct 4 ms 2440 KB Partially correct
12 Partially correct 4 ms 2392 KB Partially correct
13 Partially correct 3 ms 2392 KB Partially correct
14 Partially correct 3 ms 2392 KB Partially correct
15 Partially correct 1 ms 2392 KB Partially correct
16 Partially correct 83 ms 2584 KB Partially correct
17 Partially correct 87 ms 2600 KB Partially correct
18 Partially correct 82 ms 2584 KB Partially correct
19 Partially correct 83 ms 2584 KB Partially correct
20 Partially correct 15 ms 2576 KB Partially correct
21 Partially correct 211 ms 3084 KB Partially correct
22 Partially correct 209 ms 3108 KB Partially correct
23 Partially correct 233 ms 2856 KB Partially correct
24 Partially correct 206 ms 2864 KB Partially correct
25 Partially correct 40 ms 2852 KB Partially correct
26 Partially correct 219 ms 2864 KB Partially correct
27 Partially correct 207 ms 2856 KB Partially correct
28 Partially correct 215 ms 2864 KB Partially correct
29 Partially correct 209 ms 2864 KB Partially correct
30 Partially correct 52 ms 2856 KB Partially correct
31 Partially correct 1 ms 2392 KB Partially correct
32 Partially correct 1 ms 2392 KB Partially correct