Pagini recente » Cod sursa (job #375837) | Cod sursa (job #2055159) | Cod sursa (job #264629) | Cod sursa (job #257570) | Cod sursa (job #578767)
Cod sursa(job #578767)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("trapez.in");
ofstream fo("trapez.out");
int n,i,sol,x,y,k,j;
int 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;
}
if(nrx%2){
x=(nrx-1)/2;
y=nrx;
}else{
x=nrx/2;
y=nrx-1;
}
sol+=x*y;
if(nry%2){
x=(nry-1)/2;
y=nry;
}else{
x=nry/2;
y=nry-1;
}
sol+=x*y;
fo<<sol;
return 0;
}