Pagini recente » Istoria paginii runda/oni2012_ziua1/clasament | Cod sursa (job #2326447) | Cod sursa (job #872177) | Cod sursa (job #499203) | Cod sursa (job #736451)
Cod sursa(job #736451)
#include<iostream>
#include<fstream>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
#define mod 1001
struct punct {
float x,y;
};
vector <punct> v[mod];
punct a[1001];
inline float modul(float a)
{
if(a>=0)
return a;
else return -a;
}
inline void adauga(punct x)
{
int k;
k=(int)(x.x+x.y)%mod;
if(k<0)
k=-k;
v[k].push_back(x);
}
inline int cauta(punct x)
{
int n,i,k;
k=(int)(x.x+x.y)%mod;
if(k<0)
k=-k;
n=v[k].size()-1;
for(i=0;i<=n;i++) {
if((v[k][i].x==x.x)&&(v[k][i].y==x.y))
return 1;
}
return 0;
}
int main ()
{
int n,i,j,nr;
double b;
punct x,y;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
f>>n;
for(i=1;i<=n;i++) {
f>>b;
a[i].x=b*10000;
f>>b;
a[i].y=b*10000;
adauga(a[i]);
}
f.close();
nr=0;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++) {
x.x=a[i].y-a[j].y+a[i].x;
x.y=a[j].x-a[i].x+a[i].y;
y.x=a[i].y-a[j].y+a[j].x;
y.y=a[j].x-a[i].x+a[j].y;
if((cauta(x))&&(cauta(y)))
nr++;
}
g<<nr/2;
g.close();
return 0;
}