제출 #241363

#제출 시각아이디문제언어결과실행 시간메모리
241363kshitij_sodani이상적인 도시 (IOI12_city)C++17
11 / 100
1099 ms3468 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second //#define endl '\n' int n; map<pair<int,int>,int> aa; vector<int> xx={0,1,0,-1}; vector<int> yy={1,0,-1,0}; int DistanceSum(int nn, int x[], int y[]) { n=nn; for(int i=0;i<n;i++){ aa[{x[i],y[i]}]=1; } llo ans=0; for(int i=0;i<n;i++){ map<pair<int,int>,int> dist; dist[{x[i],y[i]}]=0; priority_queue<pair<int,pair<int,int>>> ac; ac.push({0,{x[i],y[i]}}); while(ac.size()){ pair<int,pair<int,int>> tt=ac.top(); ac.pop(); tt.a*=(-1); // cout<<tt.a<<","<<tt.b.a<<","<<tt.b.b<<endl; for(int j=0;j<4;j++){ if(aa.find({tt.b.a+xx[j],tt.b.b+yy[j]})==aa.end()){ continue; } if(dist.find({tt.b.a+xx[j],tt.b.b+yy[j]})!=dist.end()){ if(dist[{tt.b.a+xx[j],tt.b.b+yy[j]}]>tt.a+1){ dist[{tt.b.a+xx[j],tt.b.b+yy[j]}]=tt.a+1; ac.push({-tt.a-1,{tt.b.a+xx[j],tt.b.b+yy[j]}}); } } else{ dist[{tt.b.a+xx[j],tt.b.b+yy[j]}]=tt.a+1; ac.push({-tt.a-1,{tt.b.a+xx[j],tt.b.b+yy[j]}}); } } } for(int j=0;j<n;j++){ ans+=dist[{x[j],y[j]}]; } // cout<<i<<endl; } ans/=2; ans%=((llo)1e9); int ans2=ans; return ans2; return 0; } /* 11 2 5 2 6 3 3 3 6 4 3 4 4 4 5 4 6 5 3 5 4 5 6 */ /* g++ -DEVAL -Wall -static -O2 -o aa grader.cpp city.cpp */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...