Pagini recente » Cod sursa (job #1520355) | Cod sursa (job #1985320) | Cod sursa (job #2436856) | Cod sursa (job #503003) | Cod sursa (job #578764)
Cod sursa(job #578764)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("trapez.in");
ofstream fo("trapez.out");
int n,i,sol,x,y,k,j;
long long nr,nrx,nry;
struct punct{
int x,y;
} v[1001],ctg[1000001];
int cmp(punct a,punct b){
return a.x*b.y<=a.y*b.x;
}
int main() {
fi>>n;
for(i=1;i<=n;++i)
fi>>v[i].x>>v[i].y;
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j){
if(v[i].x==v[j].x)
nrx++;
else if(v[i].y==v[j].y)
nry++;
else{
if(v[i].y<v[j].y){
y=v[j].y-v[i].y;
x=v[j].x-v[i].x;
}else{
y=v[i].y-v[j].y;
x=v[i].x-v[j].x;
}
ctg[++k].x=x;
ctg[k].y=y;
}
}
sort(ctg+1,ctg+k+1,cmp);
for(i=2;i<=k;++i)
if(ctg[i].x*ctg[i-1].y==ctg[i-1].x*ctg[i].y)
nr++;
else{
if(nr%2){
x=(nr-1)/2;
y=nr;
}
else{
x=nr/2;
y=nr-1;
}
sol+=x*y;
nr=1;
}
sol+=nrx*(nrx-1)/2+nry*(nry-1)/2;
fo<<sol;
return 0;
}