Codeforces Round #390 (Div. 2) - A

 

 

题目链接:http://codeforces.com/contest/754/problem/A

题意:给定一个长度为n的序列,让你把这个序列分成几部分,保证分完后每一部分的和不为0.输出具体的划分。没有满足条件的划分输出NO

思路:可以发现最多分成2部分就可以满足条件。 所以枚举中间的划分点。如果划分点在最后说明不用划分就满足。如果找不到划分点就说明不存在满足条件的划分。

import java.io.PrintWriter;
import java.util.Scanner;


public class Main {
    public static final int MAXN=100+10;
    public static int num[]=new int [MAXN];
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        PrintWriter out = new PrintWriter(System.out);
        int n=cin.nextInt(); 
        for(int i=1;i<=n;i++){
            num[i]=cin.nextInt();
        }
        int idx=0;
        for(int i=1;i<=n&&idx==0;i++){
            int sumL=0,sumR=0;
            for(int L=1;L<=i;L++){
                sumL+=num[L];
            }
            for(int R=i+1;R<=n;R++){
                sumR+=num[R];
            }
            if(i==n){
                idx=sumL!=0?i:0;
            }else{
                idx=sumL!=0&&sumR!=0?i:0;
            }
        }
        if(idx==0){
            out.println("NO");
        }else{
            out.println("YES");
            if(idx==n){
                out.println(1);
                out.printf("%d %d\n", 1,n);
            }else{
                out.println(2);
                out.printf("%d %d\n", 1,idx);
                out.printf("%d %d\n", idx+1,n);
            }
        }
        cin.close();
        out.flush();
    }
}

 

posted @ 2017-01-08 17:47  キリト  阅读(90)  评论(0编辑  收藏  举报