打卡信奥刷题(2828)用C++实现信奥题 B4273 [蓝桥杯青少年组省赛 2023] 最大的矩形纸片
·
B4273 [蓝桥杯青少年组省赛 2023] 最大的矩形纸片
题目描述
一张半边参差不齐的网格纸(网格边长均为 111),有一边是完整没有破损的。现要从中剪出一片面积最大的矩形纸片。
给定网格纸中完整边的长度 NNN(1≤N≤1 000 0001 \leq N \leq 1\,000\,0001≤N≤1000000),以及网格中每一列残存部分的高度(1≤1 \leq1≤ 高度 ≤10 000\leq 10\,000≤10000),输出能够剪出的最大矩形纸片面积。
输入格式
第一行输入一个正整数 NNN(1≤N≤1 000 0001 \leq N \leq 1\,000\,0001≤N≤1000000),表示纸片完整边的长度。
第二行输入 NNN 个正整数(1≤1 \leq1≤ 正整数 ≤10 000\leq 10\,000≤10000),表示每列格子残存部分的高度,两个正整数之间用一个空格隔开。
输出格式
输出一个正整数,表示能够剪出的最大矩形纸片面积。
输入输出样例 #1
输入 #1
6
3 2 1 4 5 2
输出 #1
8
C++实现
#include<bits/stdc++.h>
using namespace std;
int h[1000001];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>h[i];
}
int maxn=0;
for(int i=1;i<=n;i++){
int m=1e9+1;
for(int j=i;j<=n;j++){
for(int k=i;k<=j;k++){
m=min(m,h[k]);
}
maxn=max(maxn,m*(j-i+1));
}
}
cout<<maxn<<endl;
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
更多推荐
所有评论(0)