Nemogu nikako ovaj zadatak rjesiti do kraja. Evo kod pa ako tko vidi grešku. Program prolazi za 12 test primjera a dalje javlja pogresno rjesenje.
#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define ff first
#define ss second
#define SQ(x) (x)*(x)
typedef pair < double, double > pd;
struct scmp {
bool operator()( const pd &a, const pd &b ) {
if( a.ff != b.ff ) return ( a.ff - b.ff ) > 0.00001;
else return ( a.ss - b.ss ) > 0.00001 ;
}
};
int N;
set < pair < double, double >, scmp > pravci;
vector < pair < int, int > > tocke;
int main() {
cin >> N; tocke.resize( N );
for( int i = 0; i < N; ++i ) cin >> tocke[i].ff >> tocke[i].ss;
for( int i = 0; i < N-1; ++i )
for( int j = i + 1; j < N; ++j ) {
double k, d;
if( tocke[i].ff - tocke[j].ff == 0 ) {
k = 99999.0;
d = tocke[j].ff;
}
else {
k = (double)(tocke[i].ss - tocke[j].ss ) / ( tocke[i].ff - tocke[j].ff );
d = k * ( -tocke[j].ff ) + tocke[j].ss;
}
pravci.insert( mp( d, k ) );
}
cout << pravci.size() << endl;
return 0;
}
#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define ff first
#define ss second
#define SQ(x) (x)*(x)
typedef pair < double, double > pd;
struct scmp {
bool operator()( const pd &a, const pd &b ) {
if( a.ff != b.ff ) return ( a.ff - b.ff ) > 0.00001;
else return ( a.ss - b.ss ) > 0.00001 ;
}
};
int N;
set < pair < double, double >, scmp > pravci;
vector < pair < int, int > > tocke;
int main() {
cin >> N; tocke.resize( N );
for( int i = 0; i < N; ++i ) cin >> tocke[i].ff >> tocke[i].ss;
for( int i = 0; i < N-1; ++i )
for( int j = i + 1; j < N; ++j ) {
double k, d;
if( tocke[i].ff - tocke[j].ff == 0 ) {
k = 99999.0;
d = tocke[j].ff;
}
else {
k = (double)(tocke[i].ss - tocke[j].ss ) / ( tocke[i].ff - tocke[j].ff );
d = k * ( -tocke[j].ff ) + tocke[j].ss;
}
pravci.insert( mp( d, k ) );
}
cout << pravci.size() << endl;
return 0;
}