Pagini recente » Cod sursa (job #1155091) | Cod sursa (job #2273152) | Cod sursa (job #1134406) | Cod sursa (job #1256965) | Cod sursa (job #872550)
Cod sursa(job #872550)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,i,j,a[1001],b[1001],m,rez,aa,bb;
typedef struct cod {int x,y,rest,cat;};
cod pante[1000001];
int cmp(cod aa,cod bb)
{
if(aa.cat>bb.cat) return 1;
if(aa.cat==bb.cat && aa.rest>bb.rest) return 1;
return 0;
}
int main()
{
f>>n;
f>>a[1]>>b[1];
for(i=2;i<=n;i++)
{
f>>aa>>bb;
j=i-1;
if(a[j]>aa)
{
while(j!=1 && a[j]>aa)
{
a[j+1]=a[j];
b[j+1]=b[j];
}
}
a[j]=aa;
b[j]=bb;
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
if(a[i]!=a[j])
{
m++;
pante[m].cat=(b[j]-b[i])/(a[j]-a[i]);
pante[m].rest=(b[j]-b[i])%(a[j]-a[i]);
pante[m].x=i;
pante[m].y=j;
}
else{m++; pante[m].cat=0; pante[m].rest=0; pante[m].x=i;
pante[m].y=j;}
}
sort(pante+1,pante+m+1,cmp);
/*for(i=1;i<=m;i++) g<<pante[i].val<<' ';
g<<'\n';*/
for(i=1;i<m;i++)
if(pante[i].rest==pante[i+1].rest && pante[i].cat==pante[i+1].cat && pante[i].x!=pante[i+1].x && pante[i].y!=pante[i+1].y) rez++;
g<<rez<<'\n';
f.close();
g.close();
return 0;
}