zoukankan      html  css  js  c++  java
  • 1289 大鱼吃小鱼 分类: 51nod 2015-07-18 21:21 7人阅读 评论(0) 收藏

            
                题目来源:             Codility                     
            
    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
            
    收藏
            
    关注
    取消关注
                 
    有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多少条鱼?
    Input
    第1行:1个数N,表示鱼的数量(1 <= N <= 100000)。
    第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方向(1 <= A[i] <= 10^9,B[i] = 0 或 1,0表示向左,1表示向右)。
    Output
    输出1个数,表示最终剩下的鱼的数量。
    Input示例
    5
    4 0
    3 1
    2 0
    1 0
    5 0
    Output示例
     
    2
    思路:从左往右扫一遍,然后从右到左扫一遍
    #include<stdio.h>
    #include<string.h>
    int main()
    {
     int a[100010],b[100010];
     int n;
     while(scanf("%d",&n)!=EOF)
     {
      for(int i=0;i<n;i++)
      {
       scanf("%d %d",&a[i],&b[i]);
      }
      int sum1=0,sum2=0,temp=1;
      int max1,max2;
      for(int i=0;i<n;i++)
      {
       if(b[i])
       {
        if(temp)
        {
        max1=a[i];
        temp=0;
           }
          else
          {
           if(a[i]>max1)
           max1=a[i];
          }
       }
       else
       {
        if(temp)
        sum1++;
        else
        {
         if(a[i]>max1)
         {
          sum1++;
          temp=1;
         }
        }
       }
      }
       sum2=0;temp=1;
      
       for(int j=n-1;j>=0;j--)
       {
        if(!b[j])
        {
         if(temp)
         {
          max2=a[j];
          temp=0;
         }
         else
         {
          if(a[j]>max2)
           max2=a[j];
         }
         }
         else
         {
         if(temp)
         sum2++;
          else
          {
           if(a[j]>max2)
           {
            sum2++;
            temp=1;
           }
          }
         }
        }
       printf("%d",sum1+sum2);
      }
      return 0;
     }
     
     
     
     
     
     
     
     
     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    mybatis
    Hello mybatis
    linux各种终端类型的区别和概念
    页面对象的定位
    laravel 操作 redis
    Python应用与实践
    Mysql与Oracle区别
    PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别
    php依赖注入
    Linux/Unix 怎样找出并删除某一时间点的文件
  • 原文地址:https://www.cnblogs.com/NaCl/p/4700598.html
Copyright © 2011-2022 走看看