Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define sc(a) scanf("%d", &a)
- #define sc2(a, b) scanf("%d %d", &a, &b)
- #define sc3(a, b, c) scanf("%d %d %d", &a, &b, &c)
- #define pri(x) printf("%d\n", x)
- #define prie(x) printf("%d ", x)
- #define mp make_pair
- #define pb push_back
- #define BUFF ios::sync_with_stdio(false);
- #define db(x) cerr << #x << " == " << x << endl;
- typedef long long ll;
- typedef long double ld;
- typedef pair<ll, ll> ii;
- typedef vector<int> vi;
- typedef vector<ii> vii;
- const int INF = 0x3f3f3f3f;
- const ll LINF = 0x3f3f3f3f3f3f3f3fll;
- const ld pi = acos(-1);
- const int MOD = 1e9 + 7;
- const int N = 1e6;
- vii v;
- map< pair<ii,ii>, int> retas;
- map<int, int> mapx, mapy;
- ll gcd(ll a, ll b){
- if(b==0) return a;
- return gcd(b, a%b);
- }
- int main() {
- int t=1;
- sc(t);
- while(t--){
- int n;
- sc(n);
- retas.clear(), mapx.clear(), mapy.clear();
- int resp = 1;
- for(int i=1;i<=n;i++){
- int x, y;
- sc2(x, y);
- v.pb({mp(x, y)});
- mapx[x]++, mapy[y]++;
- resp = max(resp, mapx[x]);
- resp = max(resp, mapy[y]);
- }
- for(int i=0;i<n;i++){
- retas.clear();
- for(int j=i+1;j<n;j++){
- ll dx = v[i].first - v[j].first;
- ll dy = v[i].second - v[j].second;
- ll k = gcd(abs(dx), abs(dy));
- if(dx == 0) continue;
- dx /= k;
- dy /=k;
- ii a = mp(dy, dx);
- ii b;
- b.first = v[j].second*dx - dy*v[j].first;
- b.second = dx;
- k = gcd(abs(b.first), abs(b.second) );
- b.first/= k;
- b.second/=k;
- retas[mp(a, b)]++;
- resp = max(retas[mp(a, b)] + 1, resp);
- }
- }
- pri(resp);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement