Pagini recente » Cod sursa (job #1210831) | Cod sursa (job #2901928) | Cod sursa (job #2328770) | Cod sursa (job #1334648) | Cod sursa (job #717979)
Cod sursa(job #717979)
#include<fstream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<iostream>
#define INF -1
using namespace std;
struct point{
int x;
int y;
};
vector<point> read(){
FILE *f=fopen("trapez.in", "r");
int n;
fscanf(f, "%d", &n);
vector<point> a(n);
for(int i=0; i<n; i++)
fscanf(f, "%d %d ", &a[i].x, &a[i].y);
fclose(f);
return a;
}
vector<double> compute(vector<point> a){
vector<double> k;
for(unsigned int i=0; i<a.size()-1; i++)
for(unsigned j=i+1; j<a.size(); j++){
// cout<<a[i].x<<' '<<a[i].y<<' '<<a[j].x<<' '<<a[j].y<<' ';
if((a[i].x-a[j].x)==0){
k.push_back(INF);
}else if((a[i].y-a[j].y)==0){
k.push_back(0);
}else{
k.push_back((double)(a[i].y-a[j].y)/(a[i].x-a[j].x));
}
}
return k;
}
int count(vector<double> k){
sort(k.begin(), k.end());
for(int i=0; i<k.size(); i++)
cout<<k[i]<<' ';
int c=1;
int n=0;
for(int i=0; i<k.size()-1; i++)
if(k[i]==k[i+1])
c++;
else{
cout<<c<<' '<<n<<'\n';
n+=c*(c-1)/2;
c=1;
}
cout<<n;
return n;
}
void print(int c){
ofstream g("trapez.out");
g<<c;
g.close();
}
int main(){
vector<point> a=read();
vector<double> b=compute(a);
int c=count(b);
print(c);
return 0;
}