Submission #879718

#TimeUsernameProblemLanguageResultExecution timeMemory
879718NeroZeinIdeal city (IOI12_city)C++17
11 / 100
1064 ms3156 KiB
#include "bits/stdc++.h" using namespace std; const int md = (int) 1e9; int dx[] = {1, -1, 0, 0}; int dy[] = {0, 0, 1, -1}; int DistanceSum(int N, int *X, int *Y) { int ret = 0; map<pair<int, int>, int> cells; for (int i = 0; i < N; ++i) { cells[make_pair(X[i], Y[i])] = i; } for (int i = 0; i < N; ++i) { queue<pair<int, int>> que; map<pair<int, int>, int> mp; que.emplace(X[i], Y[i]); mp[make_pair(X[i], Y[i])] = 0; while (!que.empty()) { auto [x, y] = que.front(); que.pop(); if (cells[make_pair(x, y)] < i) { ret += mp[make_pair(x, y)]; ret %= md; } for (int k = 0; k < 4; ++k) { int nx = x + dx[k], ny = y + dy[k]; if (cells.count(make_pair(nx, ny)) && !mp.count(make_pair(nx, ny))) { mp[make_pair(nx, ny)] = mp[make_pair(x, y)] + 1; que.emplace(nx, ny); } } } } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...