51nod 1100 斜率最大

来源:互联网 发布:js调用cookie 编辑:程序博客网 时间:2024/06/05 04:14

点这里

题不难 两次遍历会TLE

#include <iostream>#include <algorithm>#include <stdio.h>using namespace std;struct node{    double x,y;    int num;} t[10005];bool cmp(node a,node b){    return a.x<b.x;}double xl(node a,node b){    return (a.y-b.y)/(a.x-b.x);}int main(){    int n;    while(cin>>n)    {        node x[10005];        for(int i=0; i<n; i++)        {            scanf("%lf%lf",&t[i].x,&t[i].y);            t[i].num=i+1;        }        sort(t,t+n,cmp);        double  max1=0;        int c=0;        for(int i=0; i<n-1; i++)        {            for(int j=i+1; j<n; j++)            {                double tmp=xl(t[i],t[j]);                 //printf("%lf\n",tmp);                if(tmp>=max1)                {                    if(max1==tmp)                    {                        x[c].x=t[i].num;                        x[c++].y=t[j].num;                    }                    else                    {                        c=0;                        x[c].x=t[i].num;                        x[c].y=t[j].num;                    }                    max1=tmp;                }            }        }        if(c==0)           printf("%.0lf %.0lf\n",x[0].x,x[0].y);        else        for(int i=0; i<c; i++)        {            printf("%.0lf %.0lf\n",x[i].x,x[i].y);        }    }    return 0;}


原创粉丝点击