当前位置:网站首页>1007 Maximum Subsequence Sum(25 分)(PAT甲级)
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
2022-07-04 17:58:00 【相思明月楼】
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;
}
边栏推荐
- 大佬们,求助一下,我用mysql cdc 2.2.1(flink 1.14.5)写入kafka,设置
- Wechat reading notes of "work, consumerism and the new poor"
- 2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import 'fmt' func
- Shell programming core technology "I"
- YOLOv5s-ShuffleNetV2
- OpenCV的二值化处理函数threshold()详解
- 《工作、消费主义和新穷人》的微信读书笔记
- “只跑一趟”,小区装维任务主动推荐探索
- The 15th youth informatics competition in Shushan District in 2019
- Rookie post station management system based on C language
猜你喜欢
随机推荐
Shell 编程核心技术《一》
Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?
To sort out messy header files, I use include what you use
使用canal配合rocketmq监听mysql的binlog日志
关于判断点是否位于轮廓内的一点思考
Shell 編程核心技術《四》
Using FTP
2022养生展,健康展,北京大健康展,健康产业展11月举办
使用FTP
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
Wechat reading notes of "work, consumerism and the new poor"
生成XML元素
How test engineers "attack the city" (Part I)
基于NCF的多模块协同实例
Technologie de base de la programmation Shell IV
指定输出的字符集
Leetcode fizzbuzz C # answer
YOLOv5s-ShuffleNetV2
Is Guoyuan futures a regular platform? Is it safe to open an account in Guoyuan futures?
The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.