Submission #998291

#TimeUsernameProblemLanguageResultExecution timeMemory
998291BF001Regions (IOI09_regions)C++17
0 / 100
1380 ms25360 KiB
#include <bits/stdc++.h> using namespace std; #define N 200005 #define M 25005 int n, r, q, tim, tin[N], tout[N], vs[M], node[N], h[N], idx[M], cnt = -1; vector<int> adj[N], rg[M]; unordered_map<int, int> gt[M]; void init(int u, int p){ tin[u] = ++tim; for (auto x : adj[u]){ if (x == p) continue; init(x, u); } tout[u] = tim; } int find(int typ, int val){ int l = 0, r = rg[typ].size() - 1, rt = 0; while (l <= r){ int mid = (l + r) >> 1; if (rg[typ][mid] <= val){ rt = mid + 1; l = mid + 1; } else r = mid - 1; } return rt; } signed main(){ cin >> n >> r >> q; cin >> h[1]; for (int i = 2; i <= n; i++){ int p; cin >> p >> h[i]; adj[p].push_back(i); } init(1, 0); const int blsiz = sqrt(n); for (int i = 1; i <= n; i++){ if (vs[h[node[i]]]) continue; vs[h[node[i]]] = 1; if (rg[h[node[i]]].size() <= blsiz) continue; vector<int> pre(n + 2, 0); for (auto x : rg[h[node[i]]]){ int l = tin[node[x]], r = tout[node[x]]; pre[l]++; pre[r + 1]--; } for (int j = 1; j <= n; j++){ pre[j] += pre[j - 1]; gt[h[node[i]]][h[node[j]]] += pre[j]; } } while (q--){ int r1, r2; cin >> r1 >> r2; cout << "0\n"; } return 0; }

Compilation message (stderr)

regions.cpp: In function 'int main()':
regions.cpp:50:32: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'const int' [-Wsign-compare]
   50 |      if (rg[h[node[i]]].size() <= blsiz) continue;
      |          ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...