Code Forces 581 B. Luxurious Houses(水~)
2015-10-09 22:14
246 查看
Description
一条路上有n栋楼房(从左到右编号1~n),当一栋楼房比其右边所有楼房都高时我们称其是奢华的,现在给出这n栋楼房的高度,分别输出至少需要给第i栋楼房增加几米才能使其变得奢华(1<=i<=n)
Input
第一行为一整数n表示楼房数量,第二行n个整数表示这n栋楼房的高度
Output
输出至少需要给第i栋楼房增加几米才能使其变得奢华(1<=i<=n)
Sample Input
5
1 2 3 1 2
Sample Output
3 2 0 2 0
Solution
从后往前扫一遍更新最大高度即可,注意最后一栋楼房的输出值是0
Code
一条路上有n栋楼房(从左到右编号1~n),当一栋楼房比其右边所有楼房都高时我们称其是奢华的,现在给出这n栋楼房的高度,分别输出至少需要给第i栋楼房增加几米才能使其变得奢华(1<=i<=n)
Input
第一行为一整数n表示楼房数量,第二行n个整数表示这n栋楼房的高度
Output
输出至少需要给第i栋楼房增加几米才能使其变得奢华(1<=i<=n)
Sample Input
5
1 2 3 1 2
Sample Output
3 2 0 2 0
Solution
从后往前扫一遍更新最大高度即可,注意最后一栋楼房的输出值是0
Code
#include<stdio.h> #define maxn 100001 #define max(x,y) ((x)>(y)?(x):(y)) int n,h[maxn],a[maxn]; int main() { while(~scanf("%d",&n)) { for(int i=1;i<=n;i++) scanf("%d",&h[i]); a =h ; for(int i=n-1;i>0;i--) a[i]=max(h[i+1],a[i+1]); for(int i=1;i<n;i++) printf("%d ",a[i]>=h[i]?a[i]-h[i]+1:0); printf("0\n"); } return 0; }
相关文章推荐
- mediaplayer stop called in state 1
- 工欲学其语,必先装软件
- HRV基础
- NPAPI开发
- Redis应用场景 redis精髓
- Docker学习之简单介绍
- 9月13日 第十次课(01) Linux shell脚本编程基础
- Object-c 对象的使用和定义
- LeetCode #11 Container With Most Water (M)
- javascript基础与定义
- javascript 深度克隆(深度拷贝一个对象) prototype __ptoto__ consstructor
- 查找
- 温故知新: Java知识点终极列表(下)
- 【转】Everything中文绿色版在Win7/8用不了?
- hdoj 连连看 1175 (bfs)
- 例题8-8 防线 UVa1471
- Web前端编码规范
- SDUT 3019 电梯
- 三极管有哪几种工作状态?每种工作状态的工作条件?
- strcpy,memset,memcpy区别