Submission #1179515

#TimeUsernameProblemLanguageResultExecution timeMemory
1179515simona1230IOI Fever (JOI21_fever)C++20
5 / 100
5096 ms328 KiB
#include <bits/stdc++.h> using namespace std; struct point { long long x,y; point(){} point(long long _x,long long _y) { x=_x; y=_y; } }; long long n; point p[200001]; void read() { cin>>n; for(long long i=1;i<=n;i++) cin>>p[i].x>>p[i].y; } vector<pair<int,int> > v[401]; long long num(long long pt,long long d) { return (d-1)*n+pt; } void ae(long long x,long long y,int z) { v[x].push_back({y,z}); v[y].push_back({x,z}); } void build() { for(long long i=1;i<=n;i++) { for(long long j=1;j<=n;j++) { if(i==j)continue; point a=p[i],b=p[j]; int z=abs(a.x-b.x); if(b.x-a.x==b.y-a.y) { long long x=num(i,2),y=num(j,3); ae(x,y,z); x=num(i,1),y=num(j,4); ae(x,y,z); } if(b.x-a.x==a.y-b.y) { long long x=num(i,3),y=num(j,4); ae(x,y,z); x=num(i,2),y=num(j,1); ae(x,y,z); } } } } long long cnt=0,in[401],used[401]; void bfs(int s) { priority_queue<pair<int,int> > q; q.push({0,s}); used[s]=1; cnt=1; while(q.size()) { pair<int,int> t=q.top(); //cout<<t.second<<" "<<t.first<<endl; q.pop(); for(int i=0;i<v[t.second].size();i++) { pair<int,int> nb=v[t.second][i]; if(!used[nb.first]&&nb.second>=t.first&&in[nb.first]) { used[nb.first]=1; cnt++; q.push({nb.second,nb.first}); } } } //cout<<cnt<<" !!"<<endl; } long long f,ans; void rec(long long i) { if(i==n+1) { bfs(f); ans=max(ans,cnt); cnt=0; for(long long j=1;j<=4*n;j++) used[j]=0; return; } for(long long d=1;d<=4;d++) { if(i==1)f=num(1,d); in[num(i,d)]=1; rec(i+1); in[num(i,d)]=0; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); read(); build(); rec(1); cout<<ans<<endl; return 0; } /* 3 0 0 3 3 -1 7 */
#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...