(I2
I119
I5
(dp0
Vmaxarrea.%l
p1
(Vmaxarrea.cpp
p2
S'#include <cstdio>\r\nusing namespace std;\r\nstruct MyStruct\r\n{\r\n    int numb;\r\n    int br;\r\n    bool done;\r\n}M[1000001];\r\n\r\nint N, a, preva, sizem, stp;\r\nunsigned long long res, curr;\r\n\r\nint main ()\r\n{\r\n    scanf("%d", &N);\r\n    scanf("%d", &preva);\r\n    M[0].numb=preva;\r\n    M[0].br=1;\r\n    M[0].done=false;\r\n    for(int i=1;i<1000000;++i)\r\n    {\r\n        M[i].br=0;\r\n        M[i].done=false;\r\n    }\r\n    sizem=1;\r\n    for(int ii=2;ii<=N;++ii)\r\n    {\r\n        scanf("%d", &a);\r\n        if(preva>a)\r\n        {\r\n            for(int i=0;i<sizem;++i)\r\n            {\r\n                if(!M[i].done && M[i].numb<a)\r\n                {\r\n                    M[i].br++;\r\n                }\r\n            }\r\n            stp=0;\r\n            for(int i=sizem-1;i>=0;--i)\r\n            {\r\n                M[i].done=true;\r\n                if(a>M[i].numb)\r\n                {\r\n                    stp=M[i].br-M[i+1].br-1;\r\n                    M[i].done=false;\r\n                    break;\r\n                }\r\n            }\r\n            if(stp)\r\n            {\r\n                M[sizem].numb=a;\r\n                M[sizem].br=stp;\r\n                M[sizem].done=false;\r\n                sizem++;\r\n            }\r\n            else\r\n            {\r\n                if(M[sizem-1].numb*M[sizem-1].br<(M[sizem-1].br+1)*a)\r\n                {\r\n                    M[sizem-1].numb=a;\r\n                    M[sizem-1].br++;\r\n                    M[sizem-1].done=false;\r\n                }\r\n                else\r\n                {\r\n                    M[sizem-1].done=true;\r\n                    M[sizem].numb=a;\r\n                    M[sizem].br=M[sizem-1].br+1;\r\n                    M[sizem].done=false;\r\n                    sizem++;\r\n                }\r\n            }\r\n        }\r\n        else\r\n        {\r\n            for(int i=0;i<sizem;++i)\r\n            {\r\n                if(M[i].done)\r\n                {\r\n                    continue;\r\n                }\r\n                if(M[i].numb>a)\r\n                {\r\n                    M[i].done=true;\r\n                    continue;\r\n                }\r\n                M[i].br++;\r\n            }\r\n            M[sizem].numb=a;\r\n            M[sizem].br=1;\r\n            M[sizem].done=false;\r\n            sizem++;\r\n        }\r\n        preva=a;\r\n    }\r\n    res=-1;\r\n    for(int i=0;i<sizem;++i)\r\n    {\r\n        curr=M[i].numb*M[i].br;\r\n        if(curr>res)\r\n        {\r\n            res=curr;\r\n        }\r\n    }\r\n    printf("%llu\\n", res);\r\n    return 0;\r\n}\r\n/*\r\n11\r\n6 5 2 7 8 6 8 3 5 6 7\r\n*/\r\n'
p3
tp4
stp5
.