Submission #1160080

#TimeUsernameProblemLanguageResultExecution timeMemory
1160080ocasu3D Histogram (COCI20_histogram)C++20
0 / 110
15 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
    int n; cin>>n;
    vector<int> a(n), b(n);
    for (int i=0; i<n; i++) cin>>a[i]>>b[i];
    int ans=0;
    //cout<<'\n';
    for (int i=0; i<n; i++){
        int aL=-1, bL=-1, aR=-1, bR=-1;
        for (int j=i-1; j>=0; j--) if (a[j] < a[i]) {
            aL=a[j];
            break;
        }
        for (int j=i-1; j>=0; j--) if (b[j] < b[i]) {
            bL=b[j];
            break;
        }
        for (int j=i+1; j<n; j++) if (a[j] < a[i]) {
            aL=a[j];
            break;
        }
        for (int j=i+1; j<n; j++) if (b[j] < b[i]) {
            bL=b[j];
            break;
        }
        //cout<<a[i]<<' '<<b[i]<<'\n';
        vector<pair<int,int>> cands = {{a[i], b[i]}, {a[i], bL}, {a[i], bR}, {aL, b[i]}, {aR, b[i]}, {aL, bL}, {aL, bR}, {aR,bL}, {aR,bR}};
        for (auto [height, length]: cands) {
            int l=-1, r=n;
            for (int j=i; j>=0; j--) if (a[j]<height) {
                l=max(l,j);
                break;
            }
            for (int j=i; j>=0; j--) if (b[j]<length) {
                l=max(l,j);
                break;
            }
            for (int j=i; j<n; j++) if (a[j]<height) {
                r=min(r,j);
                break;
            }
            for (int j=i; j<n; j++) if (b[j]<length) {
                r=min(r,j);
                break;
            }
            l++, r--;
            //if (height==15 and length==19){
            //    cout<<l<<' '<<r<<'\n';
            //}
            if (l<=r){
                ans=max(ans, length*height*(r-l+1));
            }
        } 
    }
    cout<<ans<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...