当前位置:网站首页>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;
}
边栏推荐
- 26. Delete the duplicate item C solution in the ordered array
- How test engineers "attack the city" (Part I)
- Lex and yacc based lexical analyzer + parser
- node_exporter部署
- The kth largest element in the array
- C # implementation defines a set of SQL statements that can be executed across databases in the middle of SQL (detailed explanation of the case)
- 页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
- The 300th weekly match of leetcode (20220703)
- 小发猫物联网平台搭建与应用模型
- Other InterSystems%net tools
猜你喜欢

用实际例子详细探究OpenCV的轮廓绘制函数drawContours()

BI技巧丨权限轴

Pointnet/Pointnet++点云数据集处理并训练

The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology

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

DeFi生态NFT流动性挖矿系统开发搭建

Lm10 cosine wave homeopathic grid strategy

Opencv functions and methods related to binary threshold processing are summarized for comparison and use

One question per day (2022-07-02) - Minimum refueling times

Pytorch学习(四)
随机推荐
DeFi生态NFT流动性挖矿系统开发搭建
Using SSH
FTP, SFTP file transfer
Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?
Qt实现界面滑动切换效果
[uniapp] uniapp development app online Preview PDF file
node_exporter部署
2022养生展,健康展,北京大健康展,健康产业展11月举办
MySQL数据库基本操作-DDL | 黑马程序员
Lm10 cosine wave homeopathic grid strategy
小发猫物联网平台搭建与应用模型
在线文本行固定长度填充工具
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
Stream流
The difference and usage between substr (), slice (), and substring () in the string interception methods of "understand series after reading"
安徽 中安在线文旅频道推出“跟着小编游安徽”系列融媒体产品
Cache é JSON uses JSON adapters
长城证券开户安全吗 买股票怎么开户
用实际例子详细探究OpenCV的轮廓绘制函数drawContours()
Explore the contour drawing function drawcontours() of OpenCV in detail with practical examples