# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
591651 | Iwanttobreakfree | Railway (BOI17_railway) | C++98 | 307 ms | 39856 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int cnt=0;
void dfs(int a,int par,vector<vector<int>>& g,vector<int>& t,vector<int>& li,vector<pair<int,int>>& pos,vector<vector<int>>& p,vector<int>& depth){
p[a][0]=par;
for(int i=1;i<19;i++)p[a][i]=p[p[a][i-1]][i-1];
t[a]=li.size();
pos[a].first=li.size();
li.push_back(a);
for(int x:g[a]){
if(x==par)continue;
depth[x]=depth[a]+1;
dfs(x,a,g,t,li,pos,p,depth);
}
pos[a].second=li.size();
li.push_back(a);
}
void r_upd(int n,int l,int r,vector<int>& t,vector<int>& la,int a,int b){
//cout<<l<<' '<<r<<' '<<n<<'\n';
if(b<a)return;
if(a>r||b<l)return;
if(a<=l&&r<=b){
t[n]++;
la[n]++;
}else{
int mid=(r+l)/2;
if(la[n]){
t[n<<1]+=la[n];
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |