题不难 两次遍历会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;
}