#include // Ošklivý, ale praktický trik (funguje jen v GCC) using namespace std; vector vyssi_vlevo (const vector &vysky) { stack kde; kde.push(-1); stack kolik; kolik.push(1<<30); vector odpoved; for (unsigned n=0; n A(N); for (long long &a:A) scanf("%lld",&a); // Předpočítáme prefixové součty vector P(1,0); for (long long a:A) P.push_back( P.back()+a ); // Předpočítáme nejbližší vyšší sloupec vlevo vector LO = vyssi_vlevo(A); // Předpočítáme nejbližší vyšší sloupec vpravo reverse( A.begin(), A.end() ); vector HI = vyssi_vlevo(A); reverse( A.begin(), A.end() ); reverse( HI.begin(), HI.end() ); for (int n=0; n