Submission #61004

#TimeUsernameProblemLanguageResultExecution timeMemory
61004TenuunRice Hub (IOI11_ricehub)C++17
100 / 100
36 ms7352 KiB
#include "ricehub.h"
#include<bits/stdc++.h>

using namespace std;

long long r=0, curr=0, cnt=0, res=1, i, mid, b;
int* x;
bool check(){
	if((r-i)%2){
		if(curr+x[r+1]-x[mid]<=b){
			curr+=x[r+1]-x[mid];
			cnt++;
			return true;
		}
		return false;
	}
	else{
		if(curr+(x[mid+1]-x[mid])+x[r+1]-x[mid+1]<=b){
			curr+=(x[mid+1]-x[mid])+x[r+1]-x[mid+1];
			cnt++;
			mid++;
			return true;
		}
		return false;
	}
}

void del(){
	if((r-i)%2){
		curr-=x[mid]-x[i];
	}
	else{
		curr-=x[mid]-x[i];
		mid++;
	}
	cnt--;
}

int besthub(int R, int L, int X[], long long B){
	x=X;
	b=B;
	for(i=0; i<R; i++){
		r=max(r, i);
		if(i==r){
			mid=i;
			curr=0;
			cnt=1;
		}
		while(r+1<R && check()){
			r++;
		} 
		res=max(res, cnt);
		del();
	}
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...