Submission #448000

#TimeUsernameProblemLanguageResultExecution timeMemory
448000dxz05Ideal city (IOI12_city)C++14
32 / 100
1094 ms7368 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int MOD = 1e9;
const int MAXN = 2e5 + 3e2;

vector<int> g[MAXN];

vector<int> dx = {0, 1, 0, -1}, dy = {1, 0, -1, 0};

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]}] = i;
    }

    for (int i = 0; i < N; i++){
        for (int j = 0; j < 4; j++){
            if (mp.find({X[i] + dx[j], Y[i] + dy[j]}) != mp.end()){
                g[i].push_back(mp[{X[i] + dx[j], Y[i] + dy[j]}]);
            }
        }
    }

    ll ans = 0;

    for (int i = 0; i < N; i++){
        queue<int> q;
        q.push(i);

        vector<int> d(N, 1e9);
        d[i] = 0;

        while (!q.empty()){
            int x = q.front(); q.pop();
            ans += d[x];

            for (int y : g[x]){
                if (d[y] == 1e9){
                    d[y] = d[x] + 1;
                    q.push(y);
                }
            }
        }

    }

    ans >>= 1;

    return ans % MOD;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...