Submission #1169085

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
11690852025-03-18 10:08:41PieArmyHarbingers (CEOI09_harbingers)C++20
70 / 100
1096 ms31304 KiB
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int n;
vector<pair<int,ll>>komsu[100023];
ll v[100023];
ll opt[100023];
int par[100023][17],dep[100023];
ll path[100023],ans[100023];
void dfs(int pos,int root){
for(int i=1;i<17;i++){
par[pos][i]=par[par[pos][i-1]][i-1];
}
int loc=pos;
for(int i=17-1;i>=0;i--){
if(dep[loc]-1<(1<<i))continue;
if(opt[par[loc][i]]>v[pos]){
loc=par[loc][i];
}
}
loc=par[loc][0];
ans[pos]+=ans[loc]+(path[pos]-path[loc])*v[pos];
while(dep[pos]>1){
int a=par[pos][0],b=par[a][0];
if(__int128_t(ans[pos]-ans[b])*__int128_t(path[a]-path[b])<=__int128_t(ans[a]-ans[b])*__int128_t(path[pos]-path[b])){
dep[pos]--;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...