Submission #315237

#TimeUsernameProblemLanguageResultExecution timeMemory
315237juggernautIdeal city (IOI12_city)C++14
55 / 100
169 ms16200 KiB
#include<bits/stdc++.h> //#include"grader.cpp" using namespace std; typedef long long ll; vector<int>g[2005]; int d[2005][2005]; int DistanceSum(int N,int *X,int *Y){ if(N<2001){ int n=N; int i,j,res=0; for(i=0;i+1<n;i++) for(j=i+1;j<n;j++){d[i][j]=INT_MAX,d[j][i]=INT_MAX;if(abs(X[i]-X[j])+abs(Y[i]-Y[j])==1){ g[i].push_back(j); g[j].push_back(i); }} for(i=0;i<n;i++){ queue<int>q; q.push(i); while(!q.empty()){ int v=q.front(); q.pop(); for(int to:g[v])if(d[i][to]>d[i][v]+1){ d[i][to]=d[i][v]+1; q.push(to); } } } for(i=0;i+1<n;i++) for(j=i+1;j<n;j++)res=(res+d[i][j])%(1000000000); return res; } ll res=0,sum_x=0,sum_y=0,cur_x=0,cur_y=0,n=N,i; sort(X,X+n); sort(Y,Y+n); for(i=0;i<n;i++)sum_x+=1ll*X[i],sum_y+=1ll*Y[i]; for(i=0;i<n;i++){ cur_x+=1ll*X[i],cur_y+=1ll*Y[i]; res=(res+sum_x-cur_x-(1ll*X[i])*(n-i-1))%(1000000000); res=(res+sum_y-cur_y-(1ll*Y[i])*(n-i-1))%(1000000000); } return res; } /* 11 2 5 2 6 3 3 3 6 4 3 4 4 4 5 4 6 5 3 5 4 5 6 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...