Submission #1250816

#TimeUsernameProblemLanguageResultExecution timeMemory
1250816nanaseyuzukiHarbingers (CEOI09_harbingers)C++20
70 / 100
1096 ms32668 KiB
#pragma GCC target("avx") #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") #pragma GCC optimize("-fipa-sra") #pragma GCC optimize("-ftree-pre") #pragma GCC optimize("-ftree-vrp") #pragma GCC optimize("-fpeephole2") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-fsched-spec") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-falign-jumps") #pragma GCC optimize("-falign-loops") #pragma GCC optimize("-falign-labels") #pragma GCC optimize("-fdevirtualize") #pragma GCC optimize("-fcaller-saves") #pragma GCC optimize("-fcrossjumping") #pragma GCC optimize("-fthread-jumps") #pragma GCC optimize("-funroll-loops") #pragma GCC optimize("-fwhole-program") #pragma GCC optimize("-freorder-blocks") #pragma GCC optimize("-fschedule-insns") #pragma GCC optimize("inline-functions") #pragma GCC optimize("-ftree-tail-merge") #pragma GCC optimize("-fschedule-insns2") #pragma GCC optimize("-fstrict-aliasing") #pragma GCC optimize("-fstrict-overflow") #pragma GCC optimize("-falign-functions") #pragma GCC optimize("-fcse-skip-blocks") #pragma GCC optimize("-fcse-follow-jumps") #pragma GCC optimize("-fsched-interblock") #pragma GCC optimize("-fpartial-inlining") #pragma GCC optimize("no-stack-protector") #pragma GCC optimize("-freorder-functions") #pragma GCC optimize("-findirect-inlining") #pragma GCC optimize("-fhoist-adjacent-loads") #pragma GCC optimize("-frerun-cse-after-loop") #pragma GCC optimize("inline-small-functions") #pragma GCC optimize("-finline-small-functions") #pragma GCC optimize("-ftree-switch-conversion") #pragma GCC optimize("-foptimize-sibling-calls") #pragma GCC optimize("-fexpensive-optimizations") #pragma GCC optimize("-funsafe-loop-optimizations") #pragma GCC optimize("inline-functions-called-once") #pragma GCC optimize("-fdelete-null-pointer-checks") #include <bits/stdc++.h> /* --> Author: Kazuki_Hoshino__8703 <-- I love Nanasaki Ai ☆*: .。. o(≒_≒)o .。.:☆ */ #define fi first #define se second #define pii pair<int, ll> #define ll long long using namespace std; const int mn = 1e5 + 5, bm = (1 << 15) + 1, mod = 1532023; const double inf = 1e18; int n, h[mn]; ll s[mn], v[mn]; vector <pii> a[mn]; double d[mn], dp[mn]; struct line{ double a, b; }; vector <line> reina; vector <double> pts; double center(line x, line y){ return (double)(x.b - y.b) / (double)(y.a - x.a); } struct mov{ line x; double pts; int add; }; vector <mov> moves; void add(line x){ while(reina.size() && reina.back().a == x.a && reina.back().b > x.b){ moves.push_back({reina.back(), pts.back(), -1}); reina.pop_back(); pts.pop_back(); } while(reina.size() >= 2 && center(x, reina.back()) <= pts.back()){; moves.push_back({reina.back(), pts.back(), -1}); reina.pop_back(); pts.pop_back(); } if(reina.size()) pts.push_back(center(x, reina.back())); else pts.push_back(-inf); reina.push_back(x); moves.push_back({x, pts.back(), 1}); } void rollback(int snap){ while((int)moves.size() > snap){ int add = moves.back().add; line kumiko = moves.back().x; double y = moves.back().pts; moves.pop_back(); if(add == 1){ reina.pop_back(); pts.pop_back(); } else{ reina.push_back(kumiko); pts.push_back(y); } } } ll val(ll x){ int id = upper_bound(pts.begin(), pts.end(), (double)x) - pts.begin() - 1; return reina[id].a * x + reina[id].b; } void dfs(int u, int p){ int snapshot = moves.size(); line kumiko = {-d[u], dp[u]}; add(kumiko); for(auto i : a[u]){ int vv; ll c; tie(vv, c) = i; if(vv == p) continue; h[vv] = h[u] + 1; d[vv] = d[u] + c; dp[vv] = val(v[vv]) + v[vv] * d[vv] + s[vv]; dfs(vv, u); } rollback(snapshot); } void solve(){ cin >> n; for(int i = 1; i < n; i++){ int u, vv; ll c; cin >> u >> vv >> c; a[u].push_back({vv, c}); a[vv].push_back({u, c}); } for(int i = 2; i <= n; i++) cin >> s[i] >> v[i]; dfs(1, 0); for(int i = 2; i <= n; i++) cout << (long long)dp[i] << ' '; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t = 1; // cin >> t; while(t--){ solve(); } }

Compilation message (stderr)

harbingers.cpp:22:39: warning: bad option '-fwhole-program' to pragma 'optimize' [-Wpragmas]
   22 | #pragma GCC optimize("-fwhole-program")
      |                                       ^
harbingers.cpp:29:41: warning: bad option '-fstrict-overflow' to pragma 'optimize' [-Wpragmas]
   29 | #pragma GCC optimize("-fstrict-overflow")
      |                                         ^
harbingers.cpp:31:41: warning: bad option '-fcse-skip-blocks' to pragma 'optimize' [-Wpragmas]
   31 | #pragma GCC optimize("-fcse-skip-blocks")
      |                                         ^
harbingers.cpp:45:51: warning: bad option '-funsafe-loop-optimizations' to pragma 'optimize' [-Wpragmas]
   45 | #pragma GCC optimize("-funsafe-loop-optimizations")
      |                                                   ^
harbingers.cpp:72:29: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   72 | double center(line x, line y){
      |                             ^
harbingers.cpp:72:29: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:72:29: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:72:29: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:84:16: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   84 | void add(line x){
      |                ^
harbingers.cpp:84:16: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:84:16: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:84:16: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:101:23: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  101 | void rollback(int snap){
      |                       ^
harbingers.cpp:101:23: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:101:23: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:101:23: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:118:12: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  118 | ll val(ll x){
      |            ^
harbingers.cpp:118:12: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:118:12: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:118:12: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:123:22: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  123 | void dfs(int u, int p){
      |                      ^
harbingers.cpp:123:22: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:123:22: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:123:22: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:138:12: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  138 | void solve(){
      |            ^
harbingers.cpp:138:12: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:138:12: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:138:12: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
harbingers.cpp:150:13: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  150 | signed main(){
      |             ^
harbingers.cpp:150:13: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
harbingers.cpp:150:13: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
harbingers.cpp:150:13: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
#Verdict Execution timeMemoryGrader output
Fetching results...