首页 > 其他 > 详细

POJ1247:Magnificent Meatballs

时间:2014-03-03 04:27:12      阅读:521      评论:0      收藏:0      [点我收藏+]

Description

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.
bubuko.com,布布扣

Input

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.

Output

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
 
题意就是两个人,一个从位置1出发顺时针走,一个从n出发逆时针走,如何才能将圆平分
为总和相等的两部分,若能,输出两人最后的位置
 
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int main()
{
    int n,a[50],i,j,sum,t;
    while(~scanf("%d",&n),n)
    {
        sum = 0;
        for(i = 1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
        }
        t = 0;
        for(i = 1;i<=n;i++)
        {
            t+=a[i];
            if(2*t==sum)
            break;
        }
        if(i<=n)
        printf("Sam stops at position %d and Ella stops at position %d.\n",i,i+1);
        else
        printf("No equal partitioning.\n");
    }

    return 0;
}

POJ1247:Magnificent Meatballs,布布扣,bubuko.com

POJ1247:Magnificent Meatballs

原文:http://blog.csdn.net/libin56842/article/details/20238475

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!