fork download
  1. struct convex_hull {
  2. deque <pi> dq;
  3. ll f(pi line, ll x) { //y = mx + c;
  4. return line.f * x + line.s;
  5. }
  6. ll query(ll x) {
  7. while(dq.size() > 1) {
  8. if(f(dq[0], x) < f(dq[1], x)) dq.pop_front();
  9. else break;
  10. }
  11. return f(dq[0], x);
  12. }
  13. ld intersect(ll m1, ll c1, ll m2, ll c2) {
  14. return (ld)(c2-c1)/(ld)(m1-m2);
  15. }
  16. ld intersect(pi line1, pi line2) {
  17. return intersect(line1.f, line1.s, line2.f, line2.s);
  18. }
  19. void insert(ll m, ll c) {
  20. pi line = pi(m, c);
  21. while(dq.size() > 1) {
  22. ll s = dq.size();
  23. if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
  24. else break;
  25. }
  26. dq.pb(line);
  27. }
  28. } ch;
  29.  
  30. // and my insert and query part was something like this:
  31. sort(g.begin(), g.end(), [](pair<ll,ll> x,pair<ll,ll> y){
  32. if(x.s^y.s)return x.s<y.s;
  33. else return x.f>y.f;
  34. });
  35. ch.insert(0,-LLINF);
  36. for(auto i:g) {
  37. ans=max(ans,i.f + n*i.s - i.s*i.s + ch.query(-2*i.s));
  38. ch.insert(i.s, i.f + n*i.s - i.s*i.s);
  39. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:2:2: error: ‘deque’ does not name a type
  deque <pi> dq;
  ^~~~~
prog.cpp:3:2: error: ‘ll’ does not name a type
  ll f(pi line, ll x) { //y = mx + c;
  ^~
prog.cpp:6:2: error: ‘ll’ does not name a type
  ll query(ll x) {
  ^~
prog.cpp:13:2: error: ‘ld’ does not name a type
  ld intersect(ll m1, ll c1, ll m2, ll c2) {
  ^~
prog.cpp:16:2: error: ‘ld’ does not name a type
  ld intersect(pi line1, pi line2) {
  ^~
prog.cpp:19:14: error: ‘ll’ has not been declared
  void insert(ll m, ll c) {
              ^~
prog.cpp:19:20: error: ‘ll’ has not been declared
  void insert(ll m, ll c) {
                    ^~
prog.cpp: In member function ‘void convex_hull::insert(int, int)’:
prog.cpp:20:3: error: ‘pi’ was not declared in this scope
   pi line = pi(m, c);
   ^~
prog.cpp:21:9: error: ‘dq’ was not declared in this scope
   while(dq.size() > 1) {
         ^~
prog.cpp:22:4: error: ‘ll’ was not declared in this scope
    ll s = dq.size();
    ^~
prog.cpp:23:20: error: ‘s’ was not declared in this scope
    if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
                    ^
prog.cpp:23:26: error: ‘line’ was not declared in this scope
    if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
                          ^~~~
prog.cpp:23:26: note: suggested alternative: ‘linux’
    if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
                          ^~~~
                          linux
prog.cpp:23:7: error: ‘intersect’ was not declared in this scope
    if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
       ^~~~~~~~~
prog.cpp:23:7: note: suggested alternative: ‘insert’
    if(intersect(dq[s-1], line) <= intersect(dq[s-2], line)) dq.pop_back();
       ^~~~~~~~~
       insert
prog.cpp:26:3: error: ‘dq’ was not declared in this scope
   dq.pb(line);
   ^~
prog.cpp:26:9: error: ‘line’ was not declared in this scope
   dq.pb(line);
         ^~~~
prog.cpp:26:9: note: suggested alternative: ‘linux’
   dq.pb(line);
         ^~~~
         linux
prog.cpp: At global scope:
prog.cpp:31:5: error: expected constructor, destructor, or type conversion before ‘(’ token
 sort(g.begin(), g.end(), [](pair<ll,ll> x,pair<ll,ll> y){
     ^
prog.cpp:34:2: error: expected unqualified-id before ‘)’ token
 });
  ^
prog.cpp:35:1: error: ‘ch’ does not name a type
 ch.insert(0,-LLINF);
 ^~
prog.cpp:36:1: error: expected unqualified-id before ‘for’
 for(auto i:g) {
 ^~~
stdout
Standard output is empty