Submission #1190398

#TimeUsernameProblemLanguageResultExecution timeMemory
1190398TsotneSVTourism (JOI23_tourism)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; /*⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣿⠛⣿⠀⠀⠀⠀⣤⣿⢻⡇⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣿⡛⠀⣤⣿⣿⣤⣤⣿⣿⣤⢸⡇⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀ ⠀⠀⠀⠀⠀⠀⠀⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠀ ⢠⣼⣿⣿⣿⣿⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ ⢸⣿⣿⡟⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣤⣤⣤⣿⣿⣿⣿⣤⣤⣼⣿⣿ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠋ */ #define fi first #define se second #define pb push_back #define ins insert #define sz(a) (int)(a.size()) #define all(x) (x).begin(),(x).end() typedef long long ll; typedef pair<int,int> pii; typedef vector<int> vi; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} //#define ONLINE_JUDGE #ifndef ONLINE_JUDGE #include "debug.h" #else #define debug(...) #endif //const int mod = 1e9+7; //const int mod = 998244353; const int MAXN=1e5+5; const ll inf=1e9,INF=1e18; struct BIT { int n; vector<long long> S; void update(int pos,int add) { for(pos;pos<=n;pos+=pos&-pos) S[pos]+=add; } ll sum(int pos) { ll ret=0; for(pos;pos>0;pos-=pos&-pos) ret += S[pos]; return ret; } ll query(int l,int r) { return sum(r) - sum(l-1); } BIT() {} BIT(int n) { this->n = n; S = vector<long long>(n+1,0); } }; int n,m,q,C[MAXN],ans[MAXN],subtr[MAXN],id[MAXN],tp[MAXN],depth[MAXN],par[MAXN]; array<int,3> Q[MAXN]; vi g[MAXN]; int t = 1; BIT ds; int dfs_util(int v,int p = 0) { subtr[v] = 1; depth[v] = depth[p] + 1; par[v] = p; for(int i : g[v]) { if(i == p) continue; subtr[v] += dfs_util(i,v); } return subtr[v]; } void dfs_init(int v,int p = 0,int top = 1) { tp[v] = top; id[v] = t++; int hc = -1; for(int i : g[v]) { if(i == p) continue; if(hc == -1 or subtr[i] > subtr[hc]) hc = i; } if(hc == -1) return; dfs_init(hc,v,top); for(int i : g[v]) { if(i == p or i == hc) continue; dfs_init(i,v,i); } } set<array<int,3>> st; void upd(int l,int r,int x) { ds.update(x,r-l+1); auto p = st.lower_bound({l,0,0}); if(p != st.begin()) { p--; auto [tl,tr,tx] = *p; if(tr >= l) { st.erase(p); ds.update(tx,-min(r,tr)+l-1); st.ins({tl,l-1,tx}); if(tr > r) st.ins({r+1,tr,tx}); } p = st.lower_bound({l,0,0}); } while(p != st.end()) { auto [tl,tr,tx] = *p; if(tl > r) break; st.erase(p); ds.update(tx,-min(r,tr)+tl-1); if(tr > r) st.ins({r+1,tr,tx}); p = st.upper_bound({tl,tr,tx}); } st.ins({l,r,x}); } void update(int u,int v,int x) { while(tp[u] != tp[v]) { if(depth[tp[u]] < depth[tp[v]]) swap(u,v); upd(id[tp[u]],id[u],x); u = par[tp[u]]; } if(depth[u] < depth[v]) swap(u,v); upd(id[v],id[u],x); } void solve(int tc = 0){ cin>>n>>m>>q; depth[0] = 0; for(int i=0;i<n-1;i++) { int u,v; cin>>u>>v; g[u].pb(v); g[v].pb(u); } dfs_util(1); dfs_init(1); for(int i=1;i<=m;i++) cin>>C[i]; for(int i=1;i<=q;i++) cin>>Q[i][0]>>Q[i][1],Q[i][2]=i; sort(Q+1,Q+q+1,[&](auto &a,auto &b){return a[0] > b[0];}); int c_l = m+1; ds = BIT(m); for(int i=1;i<=q;i++) { auto [L,R,eid] = Q[i]; if(L == R) { ans[eid] = 1; continue; } while(c_l > L) { c_l--; if(c_l == m) continue; update(C[c_l],C[c_l+1],c_l+1); } ans[eid] = ds.sum(R); } for(int i=1;i<=q;i++) print(ans[i]); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); solve(); }

Compilation message (stderr)

tourism.cpp:27:10: fatal error: debug.h: No such file or directory
   27 | #include "debug.h"
      |          ^~~~~~~~~
compilation terminated.