# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
307327 | 2020-09-27T19:46:56 Z | aZvezda | Ideal city (IOI12_city) | C++14 | 7 ms | 3200 KB |
#include <bits/stdc++.h> using namespace std; //#pragma GCC optimize ("O3") //#pragma GCC target ("sse4") #define endl "\n" typedef long long ll; typedef long double ld; typedef unsigned long long ull; template<class T, class T2> inline bool chkmax(T &x, const T2 &y) { return x < y ? x = y, 1 : 0; } template<class T, class T2> inline bool chkmin(T &x, const T2 &y) { return x > y ? x = y, 1 : 0; } const ll mod = 1e9 + 7; template<class T> inline void fix(T &x) {if(labs(x) >= mod) {x %= mod;} if(x < 0) {x += mod;}} #define out(x) cout << __LINE__ << ": " << (#x) << " = " << (x) << endl const ll MAX_N = 1e5 + 10; vector<ll> g[MAX_N]; vector<pair<ll, pair<ll, ll> > > inter; vector<pair<ll, ll> > grid; ll n, ret = 0; ll dfs(ll x, ll p) { ll sz = inter[x].second.second - inter[x].second.first + 1; for(auto it : g[x]) { if(it == p) {continue;} sz += dfs(it, x); } ret += sz * (n - sz); ret %= (1000000000ll); return sz; } void generateTree() { inter.resize(0); sort(grid.begin(), grid.end()); for(ll i = 0; i < n; i ++) { ll j = i; while(j + 1 < n && grid[j + 1].first == grid[i].first && grid[j + 1].second == grid[j].second + 1) {j ++;} inter.push_back({grid[i].first, {grid[i].second, grid[j].second}}); i = j; } for(ll i = 0; i < inter.size(); i ++) { g[i].resize(0); } ll r = 0; for(ll l = 0; l < inter.size(); l ++) { while(r < inter.size() && inter[r].first == inter[l].first) {r ++;} if(r == inter.size()) { break; } while(r < n - 1 && inter[r].second.second < inter[l].second.first && inter[r + 1].first == inter[l].first + 1) {r ++;} while(r < n - 1 && inter[r].second.second <= inter[l].second.second && inter[r + 1].first == inter[l].first + 1) { g[l].push_back(r); g[r].push_back(l); r ++; } if(r != n && inter[r].second.first <= inter[l].second.second && inter[r].first == inter[l].first + 1) { g[l].push_back(r); g[r].push_back(l); } } dfs(0, -1); } int DistanceSum(int N, int *X, int *Y) { n = N;; grid.resize(n); for(int i = 0; i < n; i ++) { grid[i] = {X[i], Y[i]}; } return ret; } /* signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for(ll i = 0; i < n; i ++) { ll x, y; cin >> x >> y; grid.push_back({x, y}); } generateTree(); for(ll i = 0; i < n; i ++) { swap(grid[i].first, grid[i].second); } generateTree(); cout << ret << endl; return 0; }*/ /* 11 2 5 2 6 3 3 3 6 4 3 4 4 4 5 4 6 5 3 5 4 5 6 */
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 2688 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 2688 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 3200 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 6 ms | 3200 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |