#13 WA求调
  • 板块CF343C Read Time
  • 楼主dami826
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/18 13:29
  • 上次更新2024/7/18 14:29:09
查看原帖
#13 WA求调
524091
dami826楼主2024/7/18 13:29
#include<bits/stdc++.h>
using namespace std;
long long n,m,s[100001],p[100001],l=0,r=LLONG_MAX;
bool ok(long long x){
	long long lp=1,ls=1;
	while(lp<=m&&ls<=n){
		long long dis=abs(p[lp]-s[ls]);
		//printf("%lld %lld %lld\n",x,lp,ls);
		if(s[ls]<=p[lp]){
			if(dis>abs(p[lp]-s[ls+1])){
				ls++;
				//printf("%lld ok\n",x);
				continue;
			}
			//printf("%lld %lld\n",dis,x);
			if(dis>x){//到不了
				//printf("%lld f1\n",x); 
				return false;
			}
			
			lp++;
			while(lp<=m&&p[lp]<=s[ls]+x){//printf("wwwwwwwww %lld\n",x);
				lp++;
			}
			ls++;
		}
		else{
			//printf("%lld %lld\n",dis,x);
			if(dis>x){//到不了
				//printf("%lld f2\n",x); 
				return false;
			}
			if(3*dis>x){//先向右走收益更大 
				lp++;
				while(lp<=m&&p[lp]<=s[ls]+(x-dis)/2){//printf("wwwwwwwww %lld\n",x);
					lp++;
				}
				ls++;
			}
			else{//反之 
				lp++;
				while(lp<=m&&p[lp]<=s[ls]+x-2*dis){//printf("wwwwwwwww %lld\n",x);
					lp++;
				}
				ls++; 
			}
		}
	}
	//printf("wwww %lld %lld %lld %lld\n",ls,lp,n,m);
	if(lp<=m){
		//printf("%lld 3f\n",x);
		return false;
	}
	//printf("%lld t\n",x);
	return true;
}
int main(){
	scanf("%lld %lld",&n,&m);
	for(long long i=1;i<=n;i++){
		scanf("%lld",&s[i]);
	}
	for(long long i=1;i<=m;i++){
		scanf("%lld",&p[i]);
	}
	while(l<r){
		long long mid=(l+r)/2;
		if(ok(mid)){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
	printf("%lld\n",l);
	return 0;
} 
2024/7/18 13:29
加载中...