Cod sursa(job #317523)

Utilizator aladinaladin aladinn aladin Data 23 mai 2009 20:41:07
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int main()
{int x[1000009],y[1000009],maxa,mina,maxb,minb,n,a[1005],q,b[1005],i,nr,j;
 long long k=0,qw;
 freopen("trapez.in","r",stdin);
 freopen("trapez.out","w",stdout);
 scanf("%d",&n);
 for (i=1;i<=n;i++)
{ scanf("%d %d",&a[i],&b[i]);
  for (j=1;j<=i-1;j++) 
   {nr++;
    mina=a[i];minb=b[i];
    maxa=a[j];maxb=b[j];
	if ((maxa<mina) || ((maxa==mina) && (maxb<minb)))
	 {mina=a[j];minb=b[j];
      maxa=a[i];maxb=b[i];
	 }
	 
	x[nr]=(maxb-minb);
	 y[nr]=(maxa-mina);
	 /*printf("%d %d \n",x[nr],y[nr])*/
    }
}
	 for (i=1;i<nr;i++)
		 for (j=i+1;j<=nr;j++) 
			 if (x[i]*y[j]>x[j]*y[i])
			 {n=x[i];x[i]=x[j];x[j]=n;
			  n=y[i];y[i]=y[j];y[j]=n;
			 }
	 		 
 for (i=1;i<=nr;)
  {for (j=i+1;j<=nr+1;j++) 
	  if ((x[i]*y[j])!=(x[j]*y[i])) break;
     j=min(j,nr+1);
   if (j>i+1) 
	   { qw=1;
         for (q=3;q<=j-i;q++) qw*=q;
		   k+=qw;
	   }
   i=j;
  }
  printf("%lld",k);
return 0;}