Submission #41279

#TimeUsernameProblemLanguageResultExecution timeMemory
41279IvanCDivide and conquer (IZhO14_divide)C++14
100 / 100
109 ms25144 KiB
#include <bits/stdc++.h> using namespace std; random_device rd; knuth_b gen(rd()); typedef long long ll; typedef struct node* pnode; struct node{ pnode l,r; ll key,prior,puro,minimo; node(ll _key,ll _puro) : l(NULL),r(NULL),key(_key),prior(gen()),puro(_puro),minimo(_puro){} }; inline void upd(pnode t){ if(!t) return; t->minimo = t->puro; if(t->l) t->minimo = min(t->minimo,t->l->minimo); if(t->r) t->minimo = min(t->minimo,t->r->minimo); } void split(pnode t,ll key,pnode &l,pnode &r){ if(t == NULL){ l = r = NULL; } else if(key < t->key){ split(t->l,key,l,t->l); r = t; } else{ split(t->r,key,t->r,r); l = t; } upd(t); } void merge(pnode &t,pnode l,pnode r){ if(l == NULL){ t = r; } else if(r == NULL){ t = l; } else if(l->prior > r->prior){ merge(l->r,l->r,r); t = l; } else{ merge(r->l,l,r->l); t = r; } upd(t); } void insert(pnode &t,ll key,ll puro){ pnode L,R; pnode aux = new node(key,puro); split(t,key-1,L,R); merge(t,L,aux); merge(t,t,R); } ll query(pnode &t,ll val){ pnode L,R; split(t,val-1,L,R); ll resp = R->minimo; merge(t,L,R); return resp; } int main(){ ll N,ans = 0,somad = 0,somag = 0; pnode raiz = NULL; scanf("%lld",&N); for(int i = 1;i<=N;i++){ ll x,g,d; scanf("%lld %lld %lld",&x,&g,&d); insert(raiz, x - somad, somag ); somad += d; somag += g; ll cand = somag - query(raiz, x - somad ); ans = max(ans,cand); } printf("%lld\n",ans); return 0; }

Compilation message (stderr)

divide.cpp: In function 'int main()':
divide.cpp:66:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&N);
                  ^
divide.cpp:69:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld %lld",&x,&g,&d);
                                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...