Submission #1237749

#TimeUsernameProblemLanguageResultExecution timeMemory
1237749caacrugonIdeal city (IOI12_city)C++20
11 / 100
1096 ms3136 KiB
#include <bits/stdc++.h> using namespace std; #define mkp make_pair int DistanceSum(int N, int *X, int *Y) { map<pair<int,int>,bool> con; for(int i=0;i<N;i++){ con[mkp(X[i],Y[i])]=true; } int ans=0; vector<int> distx={1,0,-1,0},disty={0,1,0,-1}; for(int i=0;i<N;i++){ queue<pair<int,int>> q; q.push(mkp(X[i],Y[i])); map<pair<int,int>,int> dist; dist[mkp(X[i],Y[i])]=0; while(q.size()){ pair<int,int> nodo=q.front(); q.pop(); int d=dist[nodo]; for(int i=0;i<4;i++){ if(con.count(mkp(nodo.first-distx[i],nodo.second-disty[i]))==0 || dist.count(mkp(nodo.first-distx[i],nodo.second-disty[i])))continue; q.push(mkp(nodo.first-distx[i],nodo.second-disty[i])); dist[mkp(nodo.first-distx[i],nodo.second-disty[i])]=d+1; } } for(int j=i+1;j<N;j++){ if (dist.count(mkp(X[j],Y[j]))) { ans=(ans+dist[mkp(X[j],Y[j])])%1000000000; } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...