Submission #865384

#TimeUsernameProblemLanguageResultExecution timeMemory
865384AtabayRajabliRegions (IOI09_regions)C++17
80 / 100
8087 ms38336 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> // author : AtabeyR #define pb push_back #define pii pair<int, int> #define pll pair<ll, ll> #define all(v) v.begin(), v.end() #define OPT ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define sec second #define fi first #define int ll #define print(k) cerr << "Ans : "; cout << k << endl; #define ins insert #define bpc __builtin_popcountll #define skip continue #define endll '\n' #define gcd(a, b) __gcd(a, b) #define lcm(a, b) a*b / (__gcd(a, b)) typedef long long ll; typedef unsigned long long ull; const int oo = 0x3F3F3F3F; const int ooo = 0x3F3F3F3F3F3F3F3FLL; const int mod = 998244353; const int sz = 2e5+5; using namespace std; using namespace __gnu_pbds; template<class T> using ordered_set = tree<T, null_type,less<T>, rb_tree_tag,tree_order_statistics_node_update>; void open(string s, string f) { freopen((s + ".txt").c_str(), "r", stdin); freopen((f + ".txt").c_str(), "w", stdout); } int n, r, Q, h[sz], tim = 1, used[sz]; vector<int> g[sz]; vector<pii> rg[sz]; void dfs(int v) { int in = tim++; used[v] = 1; for(int i : g[v])if(!used[i])dfs(i); int out = tim++; rg[h[v]].pb({in, out}); } void solve(int t) { cin >> n >> r >> Q; cin >> h[1]; for(int i = 2; i<=n; i++) { int u; cin >> u >> h[i]; g[u].pb(i); } dfs(1); for(int i = 1; i<=r; i++)sort(all(rg[i])); while(Q--) { int u, v; cin >> u >> v; int ans = 0; for(pii i : rg[u]) { auto it1 = lower_bound(all(rg[v]), pii(i.fi, -ooo)); auto it2 = upper_bound(all(rg[v]), pii(i.sec, -ooo)); ans += it2 - it1; } cout << ans << endl; } } int32_t main() { // open("in", "out"); OPT int t = 1; //cin >> t; for(int i = 1; i<=t; i++) solve(i); }

Compilation message (stderr)

regions.cpp: In function 'void open(std::string, std::string)':
regions.cpp:35:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |     freopen((s + ".txt").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
regions.cpp:36:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |     freopen((f + ".txt").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...