Pagini recente » Cod sursa (job #2569465) | Cod sursa (job #3176530) | Cod sursa (job #1400826) | Cod sursa (job #426600) | Cod sursa (job #693881)
Cod sursa(job #693881)
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
void read(),solve();
vector<pair<pair<int,int>,int> >V;
int n,i,x,y,a,b,precalc[1010],SOL,j,X;
double ung,M[1010],cnt;
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
V.push_back(make_pair(make_pair(x,y),i));
}
}
void solve()
{
for(i=2;i<=n;i++)precalc[i]=precalc[i-1]+i-1;
for(vector<pair<pair<int,int>,int> >::iterator it=V.begin();it!=V.end()-1;it++)
{
a=(*it).first.first;
b=(*it).first.second;
for(vector<pair<pair<int,int>,int> >::iterator it1=it+1;it1!=V.end();it1++)
{
x=(*it1).first.first;
y=(*it1).first.second;
ung=atan2(double(y-b),double(x-a));
M[++j]=ung;
}
}
sort(M+1,M+precalc[n]+1);
cnt=M[1];X=1;
for(i=2;i<=precalc[n];i++)
{
if(cnt==M[i])
{
++X;
continue;
}
SOL+=precalc[X];
X=1;
cnt=M[i];
}
SOL+=precalc[X];
printf("%d\n",SOL);
}