HDU 1034

##利用vector<>

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
 vector<int> student;//存储每个学生的糖果数
 vector<int> judge;//因为student不能打乱顺序,所以用judge进行排序,当第一个与最后一个相等的时候,就是完成的时候
 vector<int>::iterator ib,ie;//迭代器
 int candy,wish,size,temp[2]={0};//temp[2] 存储相邻学生在没有接受别人糖果之前,自己将要给别人的糖果
 cin>>size;
 while(size!=0){
  wish=0;//存储吹口哨的次数
  for(int i=0;i<size;i++){
   cin>>candy;
   student.push_back(candy);
  }//读入数据
  for(int i=0;i<size;++i){
   if(i==0){//先将第一个改变,且存下他要给别人的糖果
    temp[0]=student[i]/2;
    student[i]=temp[0]+student[size-1]/2;
    if(student[i]%2)
    student[i]++;
    judge.push_back(student[i]);
   }
   if(i+1<size){
    temp[1]=temp[0];//temp[1] 存储上一个人糖果没变的时候,应该给别人的糖果
    temp[0]=student[i+1]/2;//存自己应该给别人的糖果
    student[i+1]=temp[0]+temp[1];
    if(student[i+1]%2)
    student[i+1]++;
    judge.push_back(student[i+1]); 
   }
   if(i==size-1){
    wish++;
    sort(judge.begin(),judge.end());//排序判断
    ib=judge.begin();ie=judge.end()-1;
    if(*ib!=*ie){
     i=-1;
     judge.clear();
    } 
   }
  }
  cout<<wish<<" "<<student[0]<<endl;
  judge.clear();
  student.clear();
  cin>>size;
 }
 return 0;
 } 
上一篇:【C语言】字节对齐(内存对齐)


下一篇:Objective-c 数组对象