Pagini recente » Cod sursa (job #272499) | Cod sursa (job #2189788) | Cod sursa (job #2942419) | Cod sursa (job #927965) | Cod sursa (job #1384663)
#include <stdio.h>
#define MAXN 1000
#define PREC 10000
#define MOD 9991
int x[MAXN], y[MAXN], hashx[MAXN], hashy[MAXN], next[MAXN], ult[MOD], dr = 0;
inline void add(int x, int y){
int hv = (x + y) % MOD;
hashx[dr] = x;
hashy[dr] = y;
next[dr] = ult[hv];
ult[hv] = dr;
dr++;
}
inline char bun(int x, int y){
int hv = (x + y) % MOD, poz;
poz = ult[hv];
while(poz > -1 && !(hashx[poz] == x && hashy[poz] == y))
poz = next[poz];
if(poz != -1)
return 1;
return 0;
}
inline int getnum(FILE *in){
char ch;
int rez = 0, minus;
minus = 1;
ch = fgetc(in);
if(ch == '-'){
minus = -1;
ch = fgetc(in);
}
while(ch >= '0' && ch <= '9'){
rez *= 10;
rez += ch - '0';
ch = fgetc(in);
}
ch = fgetc(in);
while(ch >= '0' && ch <= '9'){
rez *= 10;
rez += ch - '0';
ch = fgetc(in);
}
return rez * minus;
}
int main(){
FILE *in = fopen("patrate3.in", "r");
int n, i, j;
for(i = 0; i < MOD; i++)
ult[i] = -1;
fscanf(in, "%d ", &n);
for(i = 0; i < n; i++){
x[i] = getnum(in);
y[i] = getnum(in);
add(x[i], y[i]);
}
fclose(in);
int rez = 0;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(y[j] > y[i] && x[j] >= x[i]){
if(bun(x[j] + (y[j] - y[i]), y[j] - (x[j] - x[i])) && bun(x[i] + (y[j] - y[i]), y[i] - (x[j] - x[i])))
rez++;
}
}
}
FILE *out = fopen("patrate3.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}