本文主要是介绍Problem 1196 # 沙漠之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
小明准备来次穿越撒哈拉沙漠壮举,他知道穿越沙漠是件冒险的事情,所以他准备了一辆有x个油箱的车来次沙漠之旅。有x个油箱,从前到后放成一排,编号为1-x。
出发前小明对油箱进行了y次操作,其中有3种操作方式:
1.修改一个油箱的油量;
2.求连续一段油箱的油量和;
3.求连续一段油箱的油量最大值。
对于每个2、3操作输出对应的结果。
输入
输入的第一行为2个整数x,y。
接着一行x个整数表示x个油箱的开始油量。
接着y行,每行3个整数c,a,b,c表示操作方式,c=1时表示修改油箱a的油量为b,c=2时表示求区间[a,b]内油箱油量和,c=3时表示求区间[a,b]内的油箱最大的油量值。
输出
有若干行,行数等于c=2或c=3的操作总数。每行输出对应的每个c=2或c=3的操作结果。
输入范例
4 3
1 2 3 4
2 1 3
1 4 3
3 1 4
输出范例
6
3
#include<stdio.h>
#define MAX 100000
int main()
{int x;int y;int c;int b;int a;int i;int j;int sum;int max;int box[MAX];while(scanf("%d %d",&x,&y)!=EOF){for(i=1;i<=x;i++){scanf("%d",&box[i]);}for(i=0;i<y;i++){sum=0;max=0;scanf("%d %d %d",&c,&a,&b);switch(c){case 1:box[a]=b;break;case 2:while(a<=b){sum=sum+box[a++];}printf("%d\n",sum);break;case 3:while(a<=b){if(box[a]>max){max=box[a];}a++;}printf("%d\n",max);break;default:;}}}return 0;
}
这篇关于Problem 1196 # 沙漠之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!