Cod sursa(job #1334506)

Utilizator nnnmmmcioltan alex nnnmmm Data 4 februarie 2015 14:07:26
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
#include<algorithm>
#include<vector>
struct punct{int x,y;};
punct v[1001];
struct panta{int sus,jos;};
panta pante[1000001];
long long drepte,trapeze;
int n;
bool sortare(panta a,panta b)
{
 if(a.sus*b.jos<a.jos*b.sus)
    return true;
 else
    if(a.sus*b.jos>a.jos*b.sus)
       return false;
}
using namespace std;
int main()
{
 freopen("trapez.in","r",stdin);
 freopen("trapez.out","w",stdout);
 scanf("%d ",&n);
 for(int i=1;i<=n;i++)
     {
      scanf("%d %d ",&v[i].x,&v[i].y);
     }
 for(int i=1;i<=n;i++)
     {
      for(int j=i+1;j<=n;j++)
          {
           drepte++;
           pante[drepte].sus=(v[j].y-v[i].y);
           pante[drepte].jos=(v[j].x-v[i].x);
          }
     }
 sort(pante+1,pante+drepte+1,sortare);
 for(int i=1;i<=drepte;i++)
     {
      int paralele=1;
      while(pante[i].sus*pante[i+1].jos==pante[i+1].sus*pante[i].jos && i<=n)
            {
             i++;
             paralele++;
            }
      trapeze+=paralele*(paralele-1)/2;
     }
 printf("%lld",trapeze);
fclose(stdin);
fclose(stdout);
return 0;
}