1343C - Alternating Subsequence - CodeForces Solution


dp greedy two pointers *1200

Please click on ads to support us..

Python Code:

t=int(input())
while t>0:
    sum=0
    t-=1
    n=int(input())
    l=list(map(int,input().split()))
    temp=[0]*n
    for i in range(n):
        if i==0 or l[i]*l[i-1]<0:             temp[i]=l[i]
            if i!=0 and l[i]*l[i-1]:sum+=temp[i-1]
        else:
            temp[i]=l[i]=max(l[i],l[i-1])
    sum+=temp[-1]
    print(sum)

C++ Code:

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back

int32_t main(){
    int T = 1;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        int a[n];
        vector <int> v;
        for(int i=0;i<n;i++){
            cin>>a[i];
        }
        if(n==1){
            cout<<a[0]<<endl;
            continue;
        }
        int i=0, j=1;
        int mx = a[i];
        int ans = 0;
        while(i<n){
            while(j<n && a[i]*a[j]>0){
                mx = max(mx, a[j]);
                j++;
            }
            ans += mx;
            i = j;
            j++;
            mx = a[i];
        }
        cout<<ans<<endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

368B - Sereja and Suffixes
1665C - Tree Infection
1665D - GCD Guess
29A - Spit Problem
1097B - Petr and a Combination Lock
92A - Chips
1665B - Array Cloning Technique
1665A - GCD vs LCM
118D - Caesar's Legions
1598A - Computer Game
1605A - AM Deviation
1461A - String Generation
1585B - Array Eversion
1661C - Water the Trees
1459A - Red-Blue Shuffle
1661B - Getting Zero
1661A - Array Balancing
1649B - Game of Ball Passing
572A - Arrays
1455A - Strange Functions
1566B - MIN-MEX Cut
678C - Joty and Chocolate
1352E - Special Elements
1520E - Arranging The Sheep
1157E - Minimum Array
1661D - Progressions Covering
262A - Roma and Lucky Numbers
1634B - Fortune Telling
1358A - Park Lighting
253C - Text Editor