Submission #1260211

#TimeUsernameProblemLanguageResultExecution timeMemory
1260211user736482Gap (APIO16_gap)C++20
Compilation error
0 ms0 KiB

#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000007
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099LL
#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)
{
    cout<<s<<" "<<t<<endl;
	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);
}



ll findGap(int T,int n){
    
    ll pocz,kon;
    MinMax(0,1000000000000000000,&pocz,&kon);
    ll bst=0;
    vector<ll>v1={pocz},v2={kon};
    while(v1.size()+v2.size()<n){
        ll a,b;
        //cout<<bst<<"   ";
        MinMax(pocz+1,kon-1,&a,&b);
        v1.pb(a);
        v2.pb(b);
        pocz=a;
        kon=b;
    }
    while(v2.size()){
        v1.pb(v2.back());
        v2.pop_back();
    }
    for(ll i=1;i<n;i++)bst=max(bst,v1[i]-v1[i-1]);
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccSr7wEr.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/cczWKZf9.o:gap.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccSr7wEr.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cczWKZf9.o:gap.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status