Pagini recente » Cod sursa (job #1435239) | Cod sursa (job #201355) | Cod sursa (job #1686548) | Cod sursa (job #2783242) | Cod sursa (job #164591)
Cod sursa(job #164591)
#include <cstdio>
#include <vector>
#include <cmath>
#include <iostream>
#define DIM 1005
#define eps 0.001
using namespace std;
struct Punct {
int x, y;
};
Punct P[DIM];
int N, oriz, fact[DIM];
vector<double> panta;
double Panta(Punct A, Punct B)
{
if (A.y == B.y) return 0.0;
return (double)(A.y - B.y) / (double)(A.x - B.x);
}
int main()
{
FILE *fin = fopen("trapez.in", "r");
FILE *fout = fopen("trapez.out", "w");
fscanf(fin, "%d", &N);
for (int i = 1; i <= N; i++)
fscanf(fin, "%d%d", &P[i].x, &P[i].y);
int sol = 0;
for (int i = 1; i < N; i++)
for (int j = i + 1; j <= N; j++)
if (P[i].x == P[j].x) oriz++;
else panta.push_back(Panta(P[i], P[j]));
sol += oriz * (oriz - 1) / 2;
sort(panta.begin(), panta.end());
for (int i = 0; i < panta.size(); i++)
{
double x = panta[i];
cout << x << "\n";
int j = i + 1;
int eg = 0;
while (j < panta.size() && fabs(panta[i] - panta[j]) < eps)
{
eg++;
j++;
}
sol += eg;
//i = j - 1;
}
fprintf(fout, "%d\n", sol/2);
fclose(fin);
fclose(fout);
return 0;
}