有n只骆驼在公园里互相吐口水,如果一个骆驼在x位置能吐距离为d的口水,那么他只能吐中位置在x+d的骆驼,如果那个位置有骆驼的话
问是否有两个骆驼能彼此之间吐中口水,是的话输出YES,否则输出NO
输入
第一行一个整数n(1≤n≤100)
接下来n行,每行两个数 x_i,d_ixi,di (-10^4\leq x_i\leq10^4,1\leq |d_i| \leq2*10^4)(−104≤xi≤104,1≤∣di∣≤2∗104) , x_ixi 表示骆驼的位置, d_idi 整数表示吐在右侧,负数表示吐在左侧
如果有两只骆驼,它们彼此能吐中口水,输出YES。否则,输出NO。
思路
只要看两只不相同的骆驼能不能互相看口水。一旦能,找个变量标记一下,就可以输出YES。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define repeat(i,a,b) for(i=a;i<=b;i++)
int a[10001],b[10001];
int main()
{
int n,i,j;
scanf("%d",&n);
bool flag=false;
repeat(i,1,n)
{
scanf("%d%d",&a[i],&b[i]);
}
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)//这样就不会有两只重复的骆驼了
{
if (a[i]+b[i]==a[j] && a[i]==a[j]+b[j])//看能不能互相都能吐出口水往另一只骆驼上喷,所以是&&
flag=true;//如果能就为真
}
}
if(flag)
cout<<"YES";
else
cout<<"NO";
return 0;
}