当前位置:网站首页>1007 maximum subsequence sum (25 points) (PAT class a)
1007 maximum subsequence sum (25 points) (PAT class a)
2022-07-04 19:37:00 【Acacia moon tower】
Problem Description:
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.
Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.
Input Specification:
Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer K (≤10000). The second line contains K numbers, separated by a space.
Output Specification:
For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices i and j (as shown by the sample case). If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.
Sample Input:
10
-10 1 2 3 4 -5 -23 3 7 -21
Sample Output:
10 1 4
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
scanf("%d", &n);
vector<int> v(n);
int leftindex = 0, rightindex = n - 1, sum = -1, temp = 0, tempindex = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &v[i]);
temp = temp + v[i];
if (temp < 0) {
temp = 0;
tempindex = i + 1;
} else if (temp > sum) {
sum = temp;
leftindex = tempindex;
rightindex = i;
}
}
if (sum < 0) sum = 0;
printf("%d %d %d", sum, v[leftindex], v[rightindex]);
return 0;
}
边栏推荐
- The explain statement in MySQL queries whether SQL is indexed, and several types in extra collate and summarize
- 2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
- Stream流
- BCG 使用之CBCGPProgressDlgCtrl进度条使用
- 牛客小白月赛7 E Applese的超能力
- 在线文本行固定长度填充工具
- 如何使用Async-Awati异步任务处理代替BackgroundWorker?
- node_ Exporter deployment
- 1003 Emergency(25 分)(PAT甲级)
- Oracle with as ora-00903: invalid table name multi report error
猜你喜欢

Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?

BCG 使用之CBCGPProgressDlg进度条使用

【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案

Lm10 cosine wave homeopathic grid strategy

Detailed explanation of the binary processing function threshold() of opencv

FPGA时序约束分享01_四大步骤简述

与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用

English grammar_ Noun - use

在线SQL转Excel(xls/xlsx)工具

Pythagorean number law (any three numbers can meet the conditions of Pythagorean theorem)
随机推荐
1005 Spell It Right(20 分)(PAT甲级)
如何使用Async-Awati异步任务处理代替BackgroundWorker?
测试工程师如何“攻城”(上)
Wireshark网络抓包
基于NCF的多模块协同实例
Qt实现界面滑动切换效果
“只跑一趟”,小区装维任务主动推荐探索
在线SQL转Excel(xls/xlsx)工具
Some thoughts on whether the judgment point is located in the contour
Pythagorean number law (any three numbers can meet the conditions of Pythagorean theorem)
Oracle with as ORA-00903: invalid table name 多表报错
测试工程师如何“攻城”(下)
Educational Codeforces Round 22 E. Army Creation
Socket programming demo II
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
BCG 使用之CBCGPProgressDlgCtrl進度條使用
kotlin 条件控制
Pytorch学习(四)
The 15th youth informatics competition in Shushan District in 2019
牛客小白月赛7 F题