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.
明白题意后很简单,即前几个数之和等于后几个数之和,
有则输出这个分界点
没则输出制定句子
代码:
#include <iostream>
using namespace std;
int main()
{
int N,j,flag;
while(cin>>N&&N!=0)
{
int a[N];
for(int i=0;i<N;i++)
cin>>a[i];
int sum;
flag=1;
for(j=0;j<N;j++)
{
sum=0;
for(int i=0;i<=j;i++)
sum=sum+a[i];
for(int i=j+1;i<N;i++)
sum=sum-a[i];
if(sum==0)
{
flag=0;
cout<<"Sam stops at position "<<j+1<<" and Ella stops at position "
<<j+2<<"."<<endl;
}
}
if(flag)
cout<<"No equal partitioning."<<endl;
}
return 0;
}