Submission #426792

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4267922021-06-14 09:50:44oleh1421Building Bridges (CEOI17_building)C++17
100 / 100
74 ms7496 KiB
//#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
typedef pair<ll,ll> line;
const int N=1000010;
const ll mod=1000000007;
const ll inf=1e15;
ll h[N],w[N];
ll dp[N];
ll a[N],b[N];
line t[N];
ll f(line cur,ll x){
return cur.first*x+cur.second;
}
int TOT=1;
int L[N],R[N];
void upd(int v,int l,int r,line cur){
// cout<<v<<" "<<l<<" "<<r<<endl;
ll mid=(l+r)/2;
if (f(t[v],mid)>f(cur,mid)) swap(t[v],cur);
if (cur.second==inf || l==r) return;
if (f(t[v],l)>f(cur,l)){
if (!L[v]) {
L[v]=++TOT;
t[TOT]={1e9,inf};
}
upd(L[v],l,mid,cur);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...