比赛 201712练习 评测结果 AAAAAAAAAA
题目名称 荒岛野人 最终得分 100
用户昵称 サイタマ 运行时间 0.384 s
代码语言 C++ 内存使用 0.12 MiB
提交时间 2017-12-25 21:50:19
显示代码纯文本
#include<cstdio>
#define max(a,b) a>b?a:b
using namespace std;
int n,i,j,c[20],p[20],l[20],m,x,y;
bool flag;
int ex_gcd(int a,int b,int& x,int& y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int ret=ex_gcd(b,a%b,y,x);
	y-=a/b*x;
	return ret;
}
int lyh()
{
	freopen("savage.in","r",stdin);
	freopen("savage.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d %d %d",&c[i],&p[i],&l[i]),m=max(c[i],m);
	for(m;m<=1000000;m++)
	{
		flag=0;
		for(i=1;i<n;i++)
		{
			for(j=i+1;j<=n;j++)
			{
				int a=p[i]-p[j],b=c[j]-c[i];
				if(a<0)a=-a,b=-b;
				int G=ex_gcd(a,m,x,y);
				if(!(b%G))
				{
					x*=b/G;
					x%=m/G;
					while(x<0)x+=m/G; 
					if(x<=l[i]&&x<=l[j]){flag=1;break;}
				}
			}
			if(flag)break;
		}
		if(!flag){printf("%d\n",m);return 0;}
	}
	return 0;
}
int Main=lyh();
int main(){;}