Cod sursa(job #476747)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 12 august 2010 11:59:39
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct{
  int x, y;
} unghi;
unghi panta[1<<20];
int i,j,x[1005],y[1005],n,k,total;
bool ok;
bool cmp(unghi aa,unghi bb)
{
    double a,b;

    a=(double)aa.x/(double)aa.y;
    b=(double)bb.x/(double)bb.y;
    return(a<b);
    return(a<b);
}
int main()
{
    long long a,b,particular;
    ifstream fi("trapez.in");
    ofstream fo("trapez.out");
    fi>>n;
    for(i=1;i<=n;i++)
      fi>>x[i]>>y[i];
    k=0; particular=0;
    for(i=1;i<=n;i++)
      for(j=i+1;j<=n;j++)
        {
          if(y[i]==y[j])
          particular++;
          else
          {
          panta[++k].x=x[i]-x[j];
          panta[k].y=y[i]-y[j];
          }
        }
    sort(panta+1,panta+k+1,cmp);
    n=0; total=0; ok=0;
    for(i=2;i<=k;i++)
    {
      a=panta[i-1].x*panta[i].y;
      b=panta[i-1].y*panta[i].x;
      if(a==b) { n++; ok=1; }else if(ok)
      {
        total+=(n*(n+1))/2;
        n=0;
        ok=0;
      }
    }
    if(ok)   total+=(n*(n+1))/2;
    total+=(particular*(particular-1))/2;
    fo<<total<<"\n";
    fo.close();
    return 0;
}