欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

贝壳找房性价比(2018 计蒜之道 初赛 第三场)

程序员文章站 2022-06-02 21:26:06
...

贝壳找房性价比(2018 计蒜之道 初赛 第三场)

输入格式

输入第一行一个整数 TT 表示数据组数。

接下来输入 TT 组数据,每一组数据按照下面格式输入。

第一行输入一个整数 nn 表示房源的个数。

接下来 nn 行,每行输入两个整数 s_i, p_isi,pi,分别表示第 ii 个房源的面积为 s_isi 平方米,价格为 p_ipi万元。

数据保证 1 \le T \le 501T502 \le n \le 10^5, |s_i|, |p_i| \le 10^82n105,si,pi108,并且 没有任何两个房源的面积和价格都一样

输出格式

对于每组数据输出一行,如果该组数据的答案趋向于无穷大,输出 -11,否则,输出最大的绝对性价比差。(所有输出误差在 10^{-6}106 以内都可以被接受)。

本题答案不唯一,符合要求的答案均正确

样例输入

2
4
1 3
4 5
7 8
3 6
2
4 10
4 11

样例输出

1.500000
-1

题目来源

2018 计蒜之道 初赛 第三场

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
struct node
{
    double x;
    double y;
}a[100005];
bool cmp(node p,node q)
{
    return p.x<q.x;
}
double dis(int i1,int i2)
{
    double x=fabs(a[i1].x-a[i2].x);
    double y=fabs(a[i1].y-a[i2].y);
    if(!x)
    return -1;
    else
    {
        return y/x*1.0;
    }
}
int main()
{
   // freopen("C:\\Users\\Administrator\\Desktop\\888.txt","r",stdin);
    int t,n;
    cin>>t;
    for(int k=0;k<t;k++)
    {
        cin>>n;
        for(int i=0;i<n;i++)
        {
            scanf("%lf%lf",&a[i].x,&a[i].y);
        }
        sort(a,a+n,cmp);
        double maxx=0;
        double w=0;
        int f=0;
        for(int i=0;i<n-1;i++)
        {
            w=dis(i,i+1);
            if((int)w==-1)
            {
                f=1;
                cout<<"-1"<<endl;
                break;
            }
           if(w>maxx)
           {
               maxx=w;
           }
        }
        if(!f)
        {
            printf("%lf\n",maxx);
        }
    }
    return 0;
}


相关标签: ACM 竞赛