当前位置:网站首页>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;
}
边栏推荐
- 2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
- Unity editor extends C to traverse all pictures in folders and subdirectories
- Qt实现界面滑动切换效果
- Opencv functions and methods related to binary threshold processing are summarized for comparison and use
- HDU 1097 A hard puzzle
- The explain statement in MySQL queries whether SQL is indexed, and several types in extra collate and summarize
- 用实际例子详细探究OpenCV的轮廓绘制函数drawContours()
- 明明的随机数
- HDU 1372 & POJ 2243 Knight Moves(广度优先搜索)
- An example of multi module collaboration based on NCF
猜你喜欢
牛客小白月赛7 谁是神箭手
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
Summary and sorting of 8 pits of redis distributed lock
如何使用Async-Awati异步任务处理代替BackgroundWorker?
Pytorch学习(四)
YOLOv5s-ShuffleNetV2
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
BCG 使用之新建向导效果
English grammar_ Noun - use
随机推荐
Hough Transform 霍夫变换原理
Shell 编程核心技术《四》
Pytorch学习(四)
In flinksql, in addition to data statistics, is the saved data itself a state
HDU 1372 & POJ 2243 Knight moves (breadth first search)
Cbcgpprogressdlgctrl progress bar used by BCG
Opencv functions and methods related to binary threshold processing are summarized for comparison and use
Wireshark网络抓包
Introduction to polyfit software
“只跑一趟”,小区装维任务主动推荐探索
《工作、消费主义和新穷人》的微信读书笔记
Allure of pytest visual test report
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
1005 Spell It Right(20 分)(PAT甲级)
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
MySQL数据库基本操作-DDL | 黑马程序员
牛客小白月赛7 I 新建 Microsoft Office Word 文档
HMM隐马尔可夫模型最详细讲解与代码实现
TCP两次挥手,你见过吗?那四次握手呢?
Technologie de base de la programmation Shell IV