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;
}


猜你喜欢

转载自blog.csdn.net/sifangege/article/details/80303164
今日推荐