This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define X first
#define Y second
#define pb(x) push_back(x)
ll n, a[101], a1[101], r, r1, c[20];
pair<ll, ll> p[101];
bool b[101];
void f1(ll t){
if(p[c[1]].X-p[t].X==p[t].Y-p[c[1]].Y&&p[c[1]].X-p[t].X>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>p[c[1]].X-p[t].X){
a[t]=min(a[t], p[c[1]].X-p[t].X);
a1[t]=1;
}
}
if(p[t].X-p[c[1]].X==p[t].Y-p[c[1]].Y&&p[t].X-p[c[1]].X>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>p[t].X-p[c[1]].X){
a[t]=min(a[t], p[t].X-p[c[1]].X);
a1[t]=3;
}
}
}
void f2(ll t){
if(p[t].X-p[c[1]].X==p[t].Y-p[c[1]].Y&&p[t].X-p[c[1]].X>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>p[t].X-p[c[1]].X){
a[t]=min(a[t], p[t].X-p[c[1]].X);
a1[t]=2;
}
}
if(p[c[1]].X-p[t].X==p[t].Y-p[c[1]].Y&&-(p[c[1]].X-p[t].X)>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>-(p[c[1]].X-p[t].X)){
a[t]=min(a[t], -(p[c[1]].X-p[t].X));
a1[t]=0;
}
}
}
void f3(ll t){
if(p[c[1]].X-p[t].X==p[t].Y-p[c[1]].Y&&-(p[c[1]].X-p[t].X)>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>-(p[c[1]].X-p[t].X)){
a[t]=min(a[t], -(p[c[1]].X-p[t].X));
a1[t]=3;
}
}
if(p[t].X-p[c[1]].X==p[t].Y-p[c[1]].Y&&-(p[t].X-p[c[1]].X)>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>-(p[t].X-p[c[1]].X)){
a[t]=min(a[t], -(p[t].X-p[c[1]].X));
a1[t]=1;
}
}
}
void f4(ll t){
if(p[t].X-p[c[1]].X==p[t].Y-p[c[1]].Y&&-(p[t].X-p[c[1]].X)>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>-(p[t].X-p[c[1]].X)){
a[t]=min(a[t], -(p[t].X-p[c[1]].X));
a1[t]=0;
}
}
if(p[c[1]].X-p[t].X==p[t].Y-p[c[1]].Y&&p[c[1]].X-p[t].X>=a[c[1]]){
if(a1[t]==-1){
r1++;
}
if(a[t]>p[c[1]].X-p[t].X){
a[t]=min(a[t], p[c[1]].X-p[t].X);
a1[t]=2;
}
}
}
int main(){
// ios_base::sync_with_stdio(0);
// cin.tie(0);
cin >> n;
for(int i=0; i<n; i++){
a1[i]=-1;
cin >> p[i].Y >> p[i].X;
}
for(int hj=0; hj<4; hj++){
a1[0]=hj;
a[0]=0;
b[0]=0;
r1=1;
for(int i=1; i<n; i++){
a1[i]=-1;
a[i]=1000000000000000ll;
b[i]=0;
}
for(int i=0; i<n; i++){
c[0]=1000000000000000ll;
c[1]=0;
for(int t=0; t<n; t++){
if(!b[t]){
if(a[t]<c[0]){
c[0]=a[t];
c[1]=t;
}
}
}
if(c[0]==1000000000000000ll)break;
b[c[1]]=1;
for(int t=0; t<n; t++){
if(!b[t]){
if(a1[c[1]]==0){
f1(t);
}
if(a1[c[1]]==1){
f2(t);
}
if(a1[c[1]]==2){
f3(t);
}
if(a1[c[1]]==2){
f4(t);
}
}
}
}
r=max(r, r1);
}
cout << r;
return 0;
}
/*
15
5 6
2 9
12 0
4 11
3 12
6 5
0 8
9 10
11 13
8 7
13 2
1 1
7 14
10 4
14 3
30
275810186 246609547
122805872 99671769
243507947 220373844
281305347 252104708
237805644 214671541
172469077 149334974
222589229 229887956
160653451 208404690
241378966 211098219
144302355 224755786
186392385 163258282
199129390 169928751
294937491 265736852
196096122 172962019
314342944 285142305
202720470 166337671
157037485 133903382
263858979 240724876
210720220 181519581
296402036 267201397
186021287 183036854
195081930 173976211
328293029 299092390
261195361 238061258
323595085 294394446
299933764 270733125
240976723 128081418
188501753 165367650
277832422 248631783
119896220 96762117
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |