xjoi第1202题答案

题目描述:

很久很久以前有n株小秧苗排成一排,有一个农夫想让它们长得快一点,于是他每天会给一段连续的秧苗拔高某一个高度,现在问你最终每株秧苗的高度。

输入格式:
第一行输入一个整数n,表示秧苗的数量。
第二行输入n个数,表示每株秧苗的初始高度。
第三行输入一个整数m,表示农夫拔苗的天数。
接下来m行每行三个整数a,b,c,表示将第 a 株苗到第 b 株苗全部拔高 c 的高度。

输出格式:
输出一行,包含n个整数,以空格隔开,表示秧苗最终的高度。

样例输入:
4
1 2 3 4
3
1 2 1
2 3 1
4 4 1

样例输出:
2 4 4 5

约定:
1<=n,m<=100,1<=a,b<=n,1<=c<=1000,1<=秧苗初始高度<=100

img

代码如下:

#include <iostream>
using namespace std;

int main()
{
    int p[100],i,j,n,m;
    int a,b,c;
    cin >> n;
    for(i=0;i<n;i++)
        cin >>p[i];
    cin >> m;
    for (i=0;i<m;i++)
    {
        cin >> a>>b>>c;
        for(j=a-1;j<b;j++)
            p[j] += c;
    }
    for(i=0;i<n;i++)
    {
        if(i<n-1)
            cout << p[i] << " ";
        else
            cout << p[i];
    }
    return 0;
}

按照要求给对应数组元素加上高度值就可以了啊

#include <stdio.h>
int main()
{
    int num[100];
    int n,m,i,j,a,b,k;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&num[i]);
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
        scanf("%d%d%d",&a,&b,&k);
        for(j=a;j<=b;j++)
        {
            num[j-1]+=k;
        }
    }
    for(i=0;i<n;i++)
        printf("%d ",num[i]);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632