比赛 201712练习 评测结果 AAAAAAAAAA
题目名称 荒岛野人 最终得分 100
用户昵称 烟雨 运行时间 0.511 s
代码语言 C++ 内存使用 0.12 MiB
提交时间 2017-12-25 21:48:40
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
int c[16],p[16],l[16],n,MAX,ans;
int gcd(int x1,int y1)
{
	return y1 ? gcd(y1,x1%y1) : x1;
}
int x,y;
int exgcd(int a,int b)
{
	if(b)
	{
		exgcd(b,a%b);
		int k=x;
		x=y;
		y=k-a/b*y;
	}
	else y=(x=1)-1;
}
int check()
{
	int a1,b1,c1;
	int r;
	for(int i=1;i<n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			a1=p[i]-p[j];
			b1=ans;
			c1=c[j]-c[i];
			r=gcd(a1,b1);
			if(c1%r)continue;
			exgcd(a1,b1);
			b1=abs(b1/r);
			x=(x/r*c1%b1+b1)%b1;
			if (!x) x+=b1;
			if (x<=min(l[i],l[j])) return 1;
		}
	}
	return 0;
}
int LL()
{
	freopen ("savage.in","r",stdin);
	freopen ("savage.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&c[i],&p[i],&l[i]);
		MAX=max(c[i],MAX);
	}
	for(ans=MAX;check();ans++);
	printf("%d",ans);
	return 0;
}
int work=LL();
int main(){;}