Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <cstdio>
- #include <utility>
- #include <vector>
- #include <set>
- #include <map>
- #include <queue>
- #include <stack>
- #include <string>
- #include <cmath>
- #include <bitset>
- #include <ctime>
- #include <random>
- #include <cstdlib>
- #include <deque>
- #include <iomanip>
- #include <unordered_set>
- #include <unordered_map>
- #define F first
- #define S second
- #define pb push_back
- #define eb emplace_back
- #define ALL(x) (x).begin(),(x).end()
- #define RALL(x) (x).rbegin(),(x).rend()
- #define revstr(x) string((x).rbegin(),(x).rend())
- /*
- #pragma comment(linker, "/STACK:16777216")
- #pragma GCC optimize("O3")
- #pragma GCC optimize("Ofast")
- #pragma GCC optimize("unroll-loops")
- #pragma GCC optimize("unswitch-loops")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.1,sse4.2,abm,mmx,avx,avx2,popcnt,tune=native")
- */
- using namespace std;
- using ll = long long;
- using ld = long double;
- const int N = 2e3+5, INF = 1e9;
- const ld PI = acosl(-1), eps = 1e-13;
- const bool debug = 0;
- ld sq(const ld& x){
- return x*x;
- }
- struct vec{
- ld x = 0, y = 0;
- vec(){
- }
- vec(const ld& xx, const ld& yy){
- x = xx;
- y = yy;
- }
- ld dist(){
- return x*x+y*y;
- }
- };
- istream& operator >> (istream& in, vec& a){
- return in >> a.x >> a.y;
- }
- vec operator -(const vec& a, const vec& b){
- return vec(a.x-b.x,a.y-b.y);
- }
- ld operator ^(const vec& a, const vec& b){
- return sq(a.x*b.y - a.y*b.x);
- }
- using point = vec;
- point A, B, C, a, b, c;
- int n, ans;
- vector<ld> ms;
- vector<bool> ban;
- bool eq(const ld& a, const ld& b){
- return abs(a-b)<=eps;
- }
- inline void read(){
- cin >> n;
- ms.resize(n);
- ban.resize(n);
- for(int i = 0; i < n; ++i){
- cin >> A >> B >> C;
- a = A-C;
- b = B-C;
- c = B-A;
- ms[i] = c.dist()/((a^b)/(a.dist()*b.dist()));
- }
- }
- inline void solve(){
- for(int i = 0; i < n; ++i){
- if(ban[i]) continue;
- int tans = 1;
- ban[i] = 1;
- for(int j = 0; j < n; ++j){
- if(ban[j]) continue;
- if(eq(ms[i],ms[j])){
- ban[j] = 1;
- ++tans;
- }
- }
- ans = max(ans,tans);
- }
- }
- inline void print(){
- cout << ans;
- }
- int main(){
- if(debug) freopen("input.txt","r",stdin);
- ios_base::sync_with_stdio(0);
- cin.tie(0); cout.tie(0);
- read();
- solve();
- print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement