比赛 201712练习 评测结果 AAAAAAAAAA
题目名称 荒岛野人 最终得分 100
用户昵称 @@@ 运行时间 0.417 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2017-12-25 21:39:29
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int C[20],P[20],L[20];
int m;
int start = -1;
int exgcd(int a,int b,int& x,int& y)
{

	if(!b)
	{
		x = 1;
		y = 0;
		return a;
	}
	int ret = exgcd(b,a%b,y,x);
	y -= x*(a/b);
	return ret;
}bool flag = 0;
bool f()
{
	
	
	for(int i = 1;i < n;i++)
	{
		for(int j = i+1;j <= n;j++)
		{
			int x, y;
			int a = P[i]-P[j],c = C[j]-C[i];
			if(a < 0) a = -a,c  = -c;
			//int gcd = exgcd(abs(P[i]-P[j]),m,x,y);
			
			int gcd = exgcd(a,m,x,y);
			if(c%gcd == 0)
			{
				x*=c/gcd;
				x%=m/gcd;
				while(x<0)x+=m/gcd;
				if(x <= min(L[i],L[j]))
					return 0;
			}
		}
	}
	return 1;
}
int main()
{
	freopen("savage.in","r",stdin);
	freopen("savage.out","w",stdout);
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		cin >> C[i] >> P[i] >> L[i];
		start = max(start,C[i]);
	}
	m = start;
	for(;m <= 1000000;m++)
	{
		if(f())
		{
			cout << m << endl;
			return 0;
		}
	}
	
	
	
}