CCF201312-3 最大的矩形
阿新 • • 發佈:2018-12-10
滿分程式碼如下:
#include<iostream> #include<cstring> using namespace std; int a[1001],con[1001]; int main(void) { int n,maxx; scanf("%d",&n); maxx=0; for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]>maxx) maxx=a[i]; } memset(con,0,sizeof(con)); for(int i=0;i<n;i++) { int l=i-1,r=i+1; bool flag1=true,flag2=true; while(l>=0||r<n||flag1||flag2) { if(flag1&&a[l]>=a[i])//左側延申求左端點 con[i]++; else flag1=false; if(flag2&&a[r]>=a[i])//右側延申求右端點 con[i]++; else flag2=false; l--,r++; } //cout<<i<<' '<<con[i]<<endl; } int areamax=maxx; for(int i=0;i<n;i++) { if(a[i]*(con[i]+1)>areamax) areamax=a[i]*(con[i]+1); } printf("%d\n",areamax); return 0; }