• cf754 A. Lesha and array splitting


     应该是做麻烦了,一开始还没A(幸好上一次比赛水惨了)

     1 #include<bits/stdc++.h>
     2 #define lowbit(x) x&(-x) 
     3 #define LL long long 
     4 #define N 200005
     5 #define M 1000005
     6 #define mod 2147483648LL
     7 #define inf 0x7ffffffff
     8 using namespace std;
     9 inline int ra()
    10 {
    11     int x=0,f=1; char ch=getchar();
    12     while (ch<'0' || ch>'9'){if (ch=='-') f=-1; ch=getchar();}
    13     while (ch>='0' && ch<='9'){x=x*10+ch-'0'; ch=getchar();}
    14     return x*f;
    15 }
    16 int a[1005];
    17 struct node{
    18     int x,y;
    19 }ans[1005];
    20 int cnt;
    21 int main()
    22 {
    23     int n=ra(),start=1;
    24     bool flag=0;
    25     for (int i=1; i<=n; i++)
    26     {
    27         int x=ra();
    28         if (x!=0) a[i]=x,flag=1;
    29     }
    30     if (!flag) 
    31     {
    32         cout<<"NO";
    33         return 0;
    34     }
    35     cout<<"YES"<<endl;
    36     if (a[1]==0)
    37     {
    38         for (int i=1; i<=n; i++)
    39             if (a[i]!=0) 
    40             {
    41                 for (int j=i+1; j<=n; j++)
    42                     if (a[j]!=0 || j==n) 
    43                     {
    44                         ans[++cnt].x=1;
    45                         ans[cnt].y=j-1;
    46                         start=j;
    47                         break;
    48                     }
    49                 break;
    50             }
    51         int last=start;
    52         for (int i=last; i<=n; i++)
    53         {
    54             if (i==n && a[i]==0)
    55                 ans[cnt].y=n;
    56             if (a[i]!=0)
    57             {
    58                 ans[++cnt].x=start;
    59                 ans[cnt].y=i;
    60                 start=i+1;
    61             }
    62         }
    63     }
    64     else 
    65     {
    66         int last=start;
    67         for (int i=last; i<=n; i++)
    68         {
    69             if (i==n && a[i]==0)
    70                 ans[cnt].y=n;
    71             if (a[i]!=0)
    72             {
    73                 ans[++cnt].x=start;
    74                 ans[cnt].y=i;
    75                 start=i+1;
    76             }
    77         }
    78     }
    79     cout<<cnt<<endl;
    80     for (int i=1; i<=cnt; i++)
    81         cout<<ans[i].x<<" "<<ans[i].y<<endl;
    82     return 0;
    83 } 
  • 相关阅读:
    CSS3实战手册(第3版)(影印版)
    21世纪C语言(影印版)
    Spring Data:企业级Java的现代数据访问技术(影印版)
    Hive编程(影印版)
    iOS 6编程Cookbook(影印版)
    做自己——鬼脚七自媒体第一季
    放飞App:移动产品经理实战指南
    《推荐系统》+《推荐系统实践》
    步步惊“芯”——软核处理器内部设计分析
    ip的划分,超详细
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6261963.html
Copyright © 2020-2023  润新知