SJTU OJ 1006 求和游戏

来源:互联网 发布:软件下载app 编辑:程序博客网 时间:2024/06/01 18:55

Description

石柱上有一排石头键盘,每个键上有一个整数。请你在键盘上选择两个键,使这两个键及其之间的键上的数字和最大。如果这个最大的和不为正,则输出“Game Over"。

Input Format

第1行:键的个数n。

第2..n+1行:键上的数字整数 ai

100ai100

对于70%的数据,2n1,000

对于100%的数据,2n1,000,000

Output Format

一行,最大和或者”Game Over"。

Sample Input

53-57-28

Sample Output

13

Sample Input

3-6-9-10

Sample Output

Game Over
注意是两个键之间,需要加一个flag判断一下
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <sstream>#include <vector>#include <queue>#include <set>#include <map>#include <ctime>#define MAXN 1000  #define offset 10000  #define eps 1e-8  #define PI acos(-1.0)//3.14159265358979323846  #define exp 2.718281828using namespace std;typedef long long LL;int num[1000010];int dp[1000010];int main(){int n;while(scanf("%d",&n) != EOF){for(int i = 0 ; i<n;i++){scanf("%d",&num[i]);}int minn = -100000000;int flag = 0;//int minflag = -1;for(int i = 0;i<n;i++){if(dp[i-1] + num[i] < 0){flag = 0;dp[i] = 0;}else{dp[i] = dp[i-1] + num[i];flag ++;}if(dp[i] > minn && flag > 1){minn = dp[i];//minflag = }//minn = max(dp[i],minn);}if(minn > 0){printf("%d\n",minn);}else{printf("Game Over\n");}}return 0;}


0 0
原创粉丝点击