Submission #41259

# Submission time Handle Problem Language Result Execution time Memory
41259 2018-02-15T08:05:39 Z Just_Solve_The_Problem Gap (APIO16_gap) C++11
Compilation error
0 ms 0 KB
//#include <gap.h>
#include <bits/stdc++.h> 
#include "grader.cpp"

#define ll long long

const int inf = (int)1e9 + 7;

using namespace std;

ll solve1(int n) {
	long long left;
	long long right;
	left = 0;
	right = 1e18;
	long long mn = 0, mx = 1e18;        
	long long vec[n];
	int cnt = 0;
	int cn = n - 1;
	while (cnt <= cn) {
		MinMax(left, right, &mn, &mx);
		vec[cnt++] = mn; 
		if (mn != mx)
			vec[cn--] = mx;
		left = mn + 1;
		right = mx - 1;	
	}                  
	long long ans = 0;
	for (int i = 1; i < n; i++) {         
		if (vec[i] - vec[i - 1] > ans) {
			ans = vec[i] - vec[i - 1];
		}
	}
	return ans;
}

ll findGap(int t, int n) {
	if (t == 1) {
		return solve1(n);
	}
	ll l, r;
	MinMax(0, 1e18, &l, &r);
	if (n == 2) {
		return r - l;
	} else if (r - l + 1 == n) {
		return 1;
	}
	if(r - l + 1 == n + 1) {
		return 2;
	}
	ll dif = (r - l + 1) / (n + 1);
	ll x = (r - l + 1) % (n + 1);
	if (x) dif++;
	ll start = l;
	ll fin = start + dif - 1;
	ll fre = 0;
	ll mx = 0; 
	ll ans = 0;
	ll blockes = 0;
	while (1) {
		ll l1, r1;
		MinMax(start, fin, &l1, &r1);
		blockes++;
		x--;
		// cout << blockes << ' ' << dif << endl;
		// cout << start << ' ' << fin << endl;
		if (l1 == -1) {
			fre += dif;
		} else {
			if (fre != 0) {
				ans = max(ans, fre + mx + (l1 - start + 1));
			}
			fre = 0;             
			mx = fin - r1;
		}
		if (fin == r) break;
		if (x <= 0) {
			dif--;
			x = inf;
		}      
		start = fin + 1;
		fin = min(start + dif - 1, r);
	}
	return ans;
}

Compilation message

/tmp/ccPuV7Rc.o: In function `MinMax(long long, long long, long long*, long long*)':
grader.cpp:(.text+0x0): multiple definition of `MinMax(long long, long long, long long*, long long*)'
/tmp/ccEHrCjC.o:gap.cpp:(.text+0x0): first defined here
/tmp/ccPuV7Rc.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccEHrCjC.o:gap.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status