比赛 201712练习 评测结果 AAAAAAAAAA
题目名称 荒岛野人 最终得分 100
用户昵称 pztl 运行时间 0.619 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2018-01-01 17:28:45
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,C[20],P[20],L[20];
int gcd(int a,int b)
{
    return b==0 ? a : gcd(b,a%b);
}
void exgcd(int a,int b,int &x,int &y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return;
    }
    exgcd(b,a%b,x,y);
    int t=x;
    x=y;
    y=t-a/b*y;
}
bool luo(int m)
{
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
        {
            int a=P[i]-P[j],b=m,c=C[j]-C[i];
            int x,y,t=gcd(a,b);
            if(c%t==0)
            {
                a/=t;
				b/=t;c/=t;
                exgcd(a,b,x,y);
                b=abs(b);
                x=((c*x)%b+b)%b;
                if(!x) x+=b;
                if(x<=min(L[i],L[j])) 
				return 0;
            }
        }
    return 1;
}
int main()
{
	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]);
        C[0]=max(C[i],C[0]);
    }
    for(int i=C[0];;i++)
        if(luo(i))
        {
            cout<<i<<endl;
            return 0;
        }
}