一連の所定の K整数{ N 1 、 N 2 、...、 N K }。連続的なサブシーケンスは、と定義される{ N I 、 N I + 1 、...、 NのJ } 1.最大サブシーケンスは、その要素の最大の和を有する連続的なサブシーケンスであります。例えば、シーケンス{-2、11 -4、13 -5、-2}与え、その最大のサブシーケンスは、最大合計が20であると{11、-4、13}です。
今、あなたは、一緒に第一および最大サブシーケンスの最後の数字で、最大の合計を見つけることになっています。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは2行を占めています。最初の行は、正の整数含ま Kを(≤)。2行目は含ま スペースで区切られ、K番号。
出力仕様:
各テストケースのために、一緒に第一及び最大サブシーケンスの最後の数と一行最大和で出力、。数字は1つのスペースで区切る必要がありますが、行の末尾に余分なスペースがあってはなりません。最大サブシーケンスが一意でない場合には、出力最小インデックスを持つ1 i及び (サンプル場合によって示されるように)J。すべての場合には K番号は否定している、その最大の和が0になるように定義され、そしてあなたが最初に全体のシーケンスの最後の番号を出力することになっています。
サンプル入力:
10
-10 1 2 3 4 -5 -23 3 7 -21
サンプル出力:
10 1 4
書式#include <iostreamの> の#include <ベクトル> 使用して 名前空間はstdを、 INT のmain() { int型のT。 CIN >> T; int型の合計= 0、TMP、最大= - 1 ; ベクトル < int型 > VEC; ベクトル < int型 > のres; ベクトル < int型 > すべて。 一方、(T-- ){ CIN >> TMP。 all.push_back(TMP)。 vec.push_back(TMP)。 合計 + =TMP; もし(合計> MAX){ 最大 = 和。 RESの =のVEC; } もし(合計< 0 ){ 和 = 0 。 vec.clear(); } } もし(!最大= - 1)COUT <<最大<< " " << RES [ 0 ] << " " << RES [res.size() - 1 ]。 他の coutの<< 0 << " " <<全て[ 0 ] << <<すべて[all.size() - 1 ]。 システム(「一時停止」)。 リターン 0 ; }