「B. Maximums」

题目大意

链接http://codeforces.com/contest/1326/problem/B

给你一个规则,告诉你一个数组根据这个规则进行变换,具体是什么呢,就是产生的新数组的每一个元素等于原来数组的对应元素减去这个元素前面的所有元素中最大的那个。

做法

又是一道水题,请直接对数组进行操作,首先直接输出变换后的数组的第一个元素,因为这个元素是不会变的,然后记录下大小,之后对每个输入的数组里面的元素的值+之前记录的最大值输出即可,同时更新最大值。

代码

#include<bits/stdc++.h>
using namespace std;
long long a[200005];
long long b[200005];
int main(){
    int n;
    cin>>n;
    long long asb;
    long long temp=0;
    long long digs=0;
    for(int i=1;i<=n;i++){cin>>a[i];}
    for(int i=1;i<=n;i++){
        if(i==1){cout<<a[i]<<" ";digs=a[i];}
        else{
            cout<<a[i]+temp<<" ";
            digs=a[i]+temp;
        }
        temp=max(temp,digs);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/LH2000/p/12528879.html