Submission #1298566

#TimeUsernameProblemLanguageResultExecution timeMemory
1298566hssaan_arifVinjete (COI22_vinjete)C++20
24 / 100
3090 ms16360 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define pb push_back #define int long long #define fi first #define se second const int N = 3e5 + 5, M = 1e9 + 7, LG = 20; int n , A[N] , fen[N] , cnt[N] , u , v, l , r , m , val , ANS[N]; vector<vector<int>> lis[N]; map<int,int> cn; set<vector<int>> rg; // void add(int i , int x){ // while(i <= n){ // cnt[i]+=x; // fen[i]+=x; // i += (i&(-i)); // } // } // int prep(int i){ // int su = 0 , re = 0; // while (i > 0){ // su += fen[i]; // re += cnt[i]; // i -= (i&(-i)); // } // return su; // } void dfs(int v , int p){ for (auto u : lis[v]){ if (u[0] == p) continue; rg.insert({u[1],u[2],u[0],v}); val = 0; int l1 = 0 , r1 = 0; for (auto i : rg){ if (l1 == 0){ val += (i[1]-i[0]+1); l1 = i[0]; r1 = i[1]; continue; } if (r1 < i[0]){ val += (i[1]-i[0]+1); l1 = i[0]; r1 = i[1]; }else{ val += (max(i[1],r1) - r1); r1 = max(i[1],r1); } } ANS[u[0]] = val; dfs(u[0] , v); rg.erase({u[1],u[2],u[0],v}); } } void solve(){ cin >> n >> m; for (int i=1 ; i<=n ; i++){ cin >> u >> v >> l >> r; lis[u].pb({v,l,r}); lis[v].pb({u,l,r}); } dfs(1 , 1); for (int i=2 ; i<=n ; i++){ cout << ANS[i] << endl; } } signed main(){ for (int i=1 ; i<N ; i++){ int j = i; while(j < N){ fen[j] += 1; cnt[j] -= 1; j += (j&(-j)); } } // freopen("" , "r" , stdin); // freopen("" , "w" , stdout); // cout << setprecision(30); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ts = 1; // cin >> ts; while(ts--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...