Submission #574715

#TimeUsernameProblemLanguageResultExecution timeMemory
574715FatihSolakIdeal city (IOI12_city)C++17
11 / 100
1082 ms3540 KiB
#include <bits/stdc++.h>
using namespace std;

int DistanceSum(int n, int *x, int *y) {
    map<pair<int,int>,int> mp;
    for(int i = 0;i<n;i++){
        mp[{x[i],y[i]}] = 1;
    }
    long long ans = 0;
    if(n <= 2000){
        for(int i = 0;i<n;i++){
            map<pair<int,int>,int> dist;
            queue<pair<int,int>> q;
            q.push({x[i],y[i]});
            while(q.size()){
                auto tp = q.front();
                q.pop();
                int xx = tp.first;
                int yy = tp.second;
                ans += dist[tp];
                for(int dx = -1;dx <=1;dx++){
                    for(int dy = -1;dy<=1;dy++){
                        if(abs(dx) + abs(dy) != 1)continue;
                        if(mp[{xx+dx,yy+dy}] && dist[{xx+dx,yy+dy}] == 0 && make_pair(xx + dx,yy+dy) != make_pair(x[i],y[i])){
                            dist[{xx+dx,yy+dy}] = dist[tp] + 1;
                            q.push({xx+dx,yy+dy});
                        }
                    }
                }
            }
        }
        return ans/2;
    }
}

Compilation message (stderr)

city.cpp: In function 'int DistanceSum(int, int*, int*)':
city.cpp:5:28: warning: control reaches end of non-void function [-Wreturn-type]
    5 |     map<pair<int,int>,int> mp;
      |                            ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...