Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
Register

## 点被覆盖了..要重新找点..

Posted by sunny_fable at 2007-07-18 13:47:03 on Problem 3269
In Reply To:莫名其妙的错，谁能找出来？ Posted by:fmlwlh at 2007-07-18 13:42:46
```> 我不喜欢贴代码，但这个错误太经典了，经典得我虽然知道哪错，却不知道为什么，哪位大牛能告诉我？
> #include<iostream>
> #include<algorithm>
> #include<cmath>
> #define abs(a) ((a)>0?(a):(-a))
> using namespace std;
> typedef struct point{
>         int x,y;
>         }point;
> point p[10010];
> int N,x[10010],y[10010];
> int exsit(int x1,int y1)
> {
>     int i;
>     for (i=0;i<N;i++) if (p[i].x==x1&&p[i].y==y1) break;
>     if (i<N) return 1;
>     return 0;
> }
> __int64 dis(int x1,int y1)
> {
>     int i,j;
>     __int64 ans=0;
>     for (i=0;i<N;i++)
>     {
>         ans+=(__int64)abs(x[i]-x1);
>         ans+=(__int64)abs(y[i]-y1);
>     }
>     return ans;
> }
> main ()
> {
>      int i,j,spot;
>      __int64 barn=0;
>
>
>      scanf ("%d",&N);
>      for (i=0;i<N;i++)
>      {
>          scanf ("%d %d",&x[i],&y[i]);
>          p[i].x=x[i];
>          p[i].y=y[i];
>      }
>      sort(x,x+N);
>      sort(y,y+N);
>      for (i=(N-1)/2;i>=0;i--)
>      {
>          barn+=(__int64)(x[N-1-i]-x[i]);
>          barn+=(__int64)(y[N-1-i]-y[i]);
>      }
>      if (N&1)
>      {
>          if (exsit(x[N/2],y[N/2])==0) printf("%I64d 1\n",barn);
>          else
>          {
>               barn=1<<30;
>               __int64 temp=dis(x[N/2]-1,y[N/2]);
>               if (temp<barn) {barn=temp;spot=1;}
>               else if (temp==barn) spot++;
>
>               temp=dis(x[N/2]+1,y[N/2]);
>               if (temp<barn) {barn=temp;spot=1;}
>               else if (temp==barn) spot++;
>
>               temp=dis(x[N/2],y[N/2]-1);
>               if (temp<barn) {barn=temp;spot=1;}
>               else if (temp==barn) spot++;
>
>               temp=dis(x[N/2],y[N/2]+1);
>               if (temp<barn) {barn=temp;spot=1;}
>               else if (temp==barn) spot++;
>               printf ("%I64d %d\n",barn,spot);
>          }
>      }
>      else
>      {
>          spot=(x[N/2]-x[N/2-1]+1)*(y[N/2]-y[N/2-1]+1);
>          if (exsit(x[N/2-1],y[N/2-1])) spot--;
>          if (exsit(x[N/2-1],y[N/2])) spot--;
>          if (exsit(x[N/2],y[N/2-1])) spot--;
>          if (exsit(x[N/2],y[N/2])) spot--;
>          printf("%I64d %d\n",barn,spot);
>      }
>
>      system("pause");
>      return 0;
> }
```

Followed by: