제출 #810500

#제출 시각아이디문제언어결과실행 시간메모리
810500AkramElOmrani이상적인 도시 (IOI12_city)C++17
0 / 100
1085 ms852 KiB
#include <bits/stdc++.h> using namespace std; template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; } template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; } void dbg_out() { cerr << endl; } template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); } #define dbg(...) cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__); const int mod = 1e9; void add(int& a, int b) { a += b; if(a > mod) { a -= mod; } } vector<pair<int, int>> dir = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}}; int DistanceSum(int n, int *X, int *Y) { int sum = 0; // map<pair<int, int>, int> mp; // for(int i = 0; i < n; ++i) { // mp[{X[i], Y[i]}] = i; // } vector<pair<int, int>> v; for(int i = 0; i < n; ++i) { v.emplace_back(X[i], Y[i]); } sort(v.begin(), v.end()); const int INF = 1e9 + 5; int ops = 0; int ans = 0; // O(n^2)? for(int i = 0; i < n; ++i) { // start a bfs vector<int> dist(n, INF); queue<int> q; q.push(i); dist[i] = 0; while(!q.empty()) { int sz = q.size(); for(int i = 0; i < sz; ++i) { ops++; int p = q.front(); q.pop(); for(auto[row, col] : dir) { row += X[p]; col += Y[p]; auto it = lower_bound(v.begin(), v.end(), make_pair(row, col)); if(it == v.end() || *it != make_pair(row, col)) continue; int i = it - v.begin(); if(dist[i] != INF) continue; dist[i] = dist[p] + 1; q.push(i); } } } for(int j = i + 1; j < n; ++j) { add(ans, dist[j]); } } assert(ops <= n * n); return ans; }

컴파일 시 표준 에러 (stderr) 메시지

city.cpp: In function 'int DistanceSum(int, int*, int*)':
city.cpp:22:6: warning: unused variable 'sum' [-Wunused-variable]
   22 |  int sum = 0;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...