100pts求调
查看原帖
100pts求调
891956
TempestMiku楼主2023/5/22 19:20

样例过不去但是测试点AC了

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1000010;
inline int read(){
	int f(1),x(0);
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
	for(;isdigit(ch);ch=getchar()) x=(x<<1)+(x<<3)+(ch^48);
	return f*x;
}
inline int write(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
	return 1;
}
int x,y;
inline int exgcd(int a,int b){
	if(!b){
		x=1,y=0;
		return a;
	}
	int d=exgcd(b,a%b);
	int z=x;
	x=y;		
	y=z-y*(a/b);
	return d;
}
int n,m,C[N],P[N],L[N],start;
inline bool testify(int b){
	for(register int i=1;i<=n;i++){
		for(register int j=i+1;j<=n;j++){//ナナチミラ鮗マ 
			x=y=0;
			int a=P[j]-P[i],c=C[i]-C[j];
			int g=exgcd(a,b);
			if(c%g) continue;
			if(a<0){
				a=-a,b=-b;
			}
			int ans=(((x*c/g)%(b/g)+(b/g))%(b/g));
			if(ans<=min(L[i],L[j])) return false;
		}
	}
	return true;
}
main(void){//
	n=read();
	for(register int i=1;i<=n;i++){
		C[i]=read(),P[i]=read(),L[i]=read();
		start=max(start,C[i]);
	}
	for(register int i=start;;i++)
		if(testify(i))
			return write(i)&&0;
}

求调教

2023/5/22 19:20
加载中...