Pagini recente » Cod sursa (job #1955450) | Cod sursa (job #560409) | Cod sursa (job #1476610) | Cod sursa (job #921564) | Cod sursa (job #3226264)
#include <bits/stdc++.h>
#define MAX 1005
#define err 1e-12
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
pair<int,int>pct[MAX];
struct str
{
int x1,y1,x2,y2;
}lin[MAX*MAX];
bool crt(str a,str b)
{
return atan2(a.y1-a.y2,a.x1-a.x2)<atan2(b.y1-b.y2,b.x1-b.x2);
}
int main()
{
int n;
fin>>n;
int i;
for(i=1;i<=n;++i)
fin>>pct[i].first>>pct[i].second;
int j;
int ind=0;
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
lin[++ind]={pct[i].first,pct[i].second,pct[j].first,pct[j].second};
sort(lin+1,lin+ind+1,crt);
///for(i=1;i<=ind;++i)
/// cout<<atan2(lin[i].y1-lin[i].y2,lin[i].x1-lin[i].x2)*180/3.1415<<' '<<lin[i].x1<<' '<<lin[i].y1<<' '<<lin[i].x2<<' '<<lin[i].y2<<'\n';
long long tot=0;
for(i=1;i<=ind;++i)
{
j=i;
while(j<ind && fabs(atan2(lin[j].y1-lin[j].y2,lin[j].x1-lin[j].x2)-atan2(lin[j+1].y1-lin[j+1].y2,lin[j+1].x1-lin[j+1].x2))<err)
++j;
tot+=1LL*(j-i+1)*(j-i)/2;
i=j;
}
fout<<tot;
return 0;
}