zoukankan      html  css  js  c++  java
  • ZOJ Problem Set–1402 Magnificent Meatballs

    Time Limit: 2 Seconds      Memory Limit: 65536 KB


    Sam and Ella run a catering service. They like to put on a show when serving meatballs to guests seated at round tables. They march out of the kitchen with pots of meatballs and start serving adjacent guests. Ella goes counterclockwise and Sam goes clockwise, until they both plop down their last meatball, at the same time, again at adjacent guests. This impressive routine can only be accomplished if they can divide the table into two sections, each having the same number of meatballs. You are to write a program to assist them.

    At these catering events, each table seats 2 <= N <= 30 guests. Each guest orders at least one and at most nine meatballs. Each place at the table is numbered from 1 to N, with the host at position 1 and the host's spouse at position N. Sam always serves the host first then proceeds to serve guests in increasing order. Ella serves the spouse first, then serves guests in decreasing order. The figures illustrate the first two example input cases.

    Input consists of one or more test cases. Each test case contains the number of guests N followed by meatballs ordered by each guest, from guest 1 to guest N. The end of the input is a line with a single zero.

    For each table, output a single line with the ending positions for Sam and Ella, or the sentence indicating an equal partitioning isn't possible. Use the exact formatting shown below.

    Sample Input
    5 9 4 2 8 3
    5 3 9 4 2 8
    6 1 2 1 2 1 2
    6 1 2 1 2 1 1
    0

    Sample Output
    Sam stops at position 2 and Ella stops at position 3.
    No equal partitioning.
    No equal partitioning.
    Sam stops at position 3 and Ella stops at position 4.


    Source: Mid-Central USA 2002
    #include<iostream>
    
    using namespace std;
    
    int main()
    
    {
    
      int guests;
    
      while(cin>>guests && guests)
    
      {
    
        int *meatBallList = new int[guests];
    
        int totalMeatBall = 0;
    
        for(int i = 0; i < guests;i++)
    
        {
    
          cin>>*(meatBallList + i);
    
          totalMeatBall += *(meatBallList + i);
    
        }
    
        if(totalMeatBall%2 != 0)
    
        {
    
          cout<<"No equal partitioning."<<endl;
    
        }
    
        else
    
        {
    
          int sam = 0, equalPartition = totalMeatBall/2;
    
          for(int j = 0; j < guests; j++)
    
          {
    
            sam += *(meatBallList + j);
    
            if(sam == equalPartition)
    
            {
    
              cout<<"Sam stops at position "<<j + 1<<" and Ella stops at position "<<j + 2<<"."<<endl;
    
              break;
    
            }
    
            else if( sam > equalPartition)
    
            {
    
              cout<<"No equal partitioning."<<endl;
    
              break;
    
            }
    
          }
    
        }
    
      }
    
      return 0;
    
    }
  • 相关阅读:
    多线程简略版
    vue组件,vue补充和总结,JS循环遍历和加减运算、类型转换补充
    表单、条件、循环指令,分隔符,前端数据库,过滤器,计算属性,监听属性,冒泡排序
    vue基本语法 JS补充
    VUE框架
    跨站请求伪造(csrf),django的settings源码剖析,django的auth模块
    cookie和session django中间件
    多对多第三张表的创建方式 和 forms组件的使用
    golang之 Array(数组)
    变量,数据类型,运算符,流程控制
  • 原文地址:https://www.cnblogs.com/malloc/p/2428558.html
Copyright © 2011-2022 走看看