Submission #417546

#TimeUsernameProblemLanguageResultExecution timeMemory
417546MDarioIOI Fever (JOI21_fever)C++11
6 / 100
1 ms204 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...