답안 #916058

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
916058 2024-01-25T08:17:47 Z GrindMachine Gap (APIO16_gap) C++17
0 / 100
2000 ms 3136 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 = 75;

#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 != -1){
			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,inf2);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Incorrect 1 ms 2388 KB Output isn't correct
3 Incorrect 1 ms 2532 KB Output isn't correct
4 Incorrect 1 ms 2644 KB Output isn't correct
5 Incorrect 1 ms 2392 KB Output isn't correct
6 Incorrect 4 ms 2392 KB Output isn't correct
7 Incorrect 5 ms 2392 KB Output isn't correct
8 Incorrect 4 ms 2392 KB Output isn't correct
9 Incorrect 5 ms 2392 KB Output isn't correct
10 Incorrect 1 ms 2392 KB Output isn't correct
11 Incorrect 68 ms 2528 KB Output isn't correct
12 Incorrect 69 ms 2528 KB Output isn't correct
13 Incorrect 79 ms 2392 KB Output isn't correct
14 Incorrect 68 ms 2392 KB Output isn't correct
15 Incorrect 26 ms 2392 KB Output isn't correct
16 Incorrect 1385 ms 2632 KB Output isn't correct
17 Incorrect 1394 ms 2620 KB Output isn't correct
18 Incorrect 1555 ms 2612 KB Output isn't correct
19 Incorrect 1406 ms 2632 KB Output isn't correct
20 Incorrect 14 ms 2572 KB Output isn't correct
21 Execution timed out 3061 ms 3136 KB Time limit exceeded
22 Execution timed out 3052 ms 2884 KB Time limit exceeded
23 Execution timed out 3039 ms 2888 KB Time limit exceeded
24 Execution timed out 3045 ms 2896 KB Time limit exceeded
25 Execution timed out 2637 ms 2884 KB Time limit exceeded
26 Execution timed out 3024 ms 3136 KB Time limit exceeded
27 Execution timed out 3007 ms 2888 KB Time limit exceeded
28 Execution timed out 3001 ms 3104 KB Time limit exceeded
29 Execution timed out 3041 ms 2852 KB Time limit exceeded
30 Incorrect 44 ms 2848 KB Output isn't correct
31 Incorrect 2 ms 2392 KB Output isn't correct
32 Incorrect 3 ms 2392 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 2 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 4 ms 2588 KB Partially correct
7 Partially correct 5 ms 2392 KB Partially correct
8 Partially correct 4 ms 2392 KB Partially correct
9 Partially correct 6 ms 2392 KB Partially correct
10 Partially correct 1 ms 2392 KB Partially correct
11 Partially correct 70 ms 2392 KB Partially correct
12 Partially correct 71 ms 2392 KB Partially correct
13 Partially correct 72 ms 2548 KB Partially correct
14 Partially correct 81 ms 2640 KB Partially correct
15 Partially correct 26 ms 2392 KB Partially correct
16 Partially correct 1443 ms 2616 KB Partially correct
17 Partially correct 1432 ms 2584 KB Partially correct
18 Partially correct 1403 ms 2616 KB Partially correct
19 Partially correct 1423 ms 2628 KB Partially correct
20 Partially correct 11 ms 2568 KB Partially correct
21 Execution timed out 3063 ms 2900 KB Time limit exceeded
22 Execution timed out 3055 ms 2860 KB Time limit exceeded
23 Execution timed out 3061 ms 2888 KB Time limit exceeded
24 Execution timed out 3033 ms 2888 KB Time limit exceeded
25 Execution timed out 2612 ms 2884 KB Time limit exceeded
26 Execution timed out 3038 ms 2856 KB Time limit exceeded
27 Execution timed out 3029 ms 2888 KB Time limit exceeded
28 Execution timed out 3019 ms 3068 KB Time limit exceeded
29 Execution timed out 3058 ms 2908 KB Time limit exceeded
30 Partially correct 44 ms 2888 KB Partially correct
31 Partially correct 2 ms 2392 KB Partially correct
32 Partially correct 2 ms 2392 KB Partially correct