码迷,mamicode.com
首页 > 其他好文 > 详细

hihoCoder1704(暴力)

时间:2018-04-05 21:04:51      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:panel   lap   一个   scan   暴力   分析   code   i++   printf   

#1704 : 循环数组

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

给定包含N个整数的数组A1, A2, ... AN,你可以选择任意一个Ai,将Ai旋转到数组第一项,即将数组变成:

Ai, Ai+1, Ai+2, ... AN, A1, A2, ..., Ai-1  

现在小Hi希望旋转之后的数组满足:

对于任意K(1 ≤ i ≤ N),前K项的和都是正数。  

例如对于A=[3, -5, 2, -2, 3, 0],旋转成[3, 0, 3, -5, 2, -2]满足条件。  

请你输出i,代表将Ai旋转到第一项满足条件。  

如果有多解,你可以输出任意一个i。如果无解输出-1。

输入

第一行包含一个整数N。  

第二行包含N个整数A1, A2, ... AN。  

对于50%的数据,1 ≤ N ≤ 1000  

对于100%的数据,1 ≤ N ≤ 100000, -1000000 ≤ Ai ≤ 1000000

输出

一个整数表示答案。

样例输入
6  
3 -5 2 -2 3 0
样例输出
5

分析:暴力出奇迹=_=......
技术分享图片
#include<cstdio>
#include<algorithm>
using namespace std;
long long A[100010];

int main()
{
    int N;
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
    {
        scanf("%lld",&A[i]);
        A[i]+=A[i-1];
    }
    
    int flag=-1;
    for(int i=1;i<=N;i++)
    {
        int t=0;
        for(int j=i;j<=N;j++)
        if(A[j]-A[i-1]<=0) {t=1;break;}
        if(t) continue;
        long long M=A[N]-A[i-1];
        for(int k=1;k<i;k++)
        if(M+A[k]<=0) {t=1;break;}
        if(!t) {flag=i;break;}
    }
    printf("%d\n",flag);
    return 0;
}
View Code

 






hihoCoder1704(暴力)

标签:panel   lap   一个   scan   暴力   分析   code   i++   printf   

原文地址:https://www.cnblogs.com/ACRykl/p/8724044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!