poj3665

来源:互联网 发布:临沂拓普网络拖欠工资 编辑:程序博客网 时间:2024/06/06 01:07

题目大意:

有一款MP3,叫iCow,里面存储了N(1<=N<=1000)首歌曲,随机播放顺序由以下算法决定。

• 每首歌i有一个初始的Ri(1<=Ri<=10000)
• 下首歌总是最高的Ri(如果Ri==Rj && i

解题思路:

模拟播放的过程即可

代码如下:

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int ifind(int ra[1001],int n){  int i;  int max=ra[0],mark=0;  for(i=1;i<n;i++)  {    if(ra[i]>max)    {      max=ra[i];mark=i;                 }                  }      return mark;}int main(){  int n,t;  int ra[1001];  int i,max_i;  int remain;  scanf("%d%d",&n,&t);  for(i=0;i<n;i++)  {    scanf("%d",&ra[i]);                  }  while(t--)  {    max_i=ifind(ra,n);    remain=0;    if(ra[max_i]%(n-1)!=0)    {      remain=ra[max_i]%(n-1);      ra[max_i]=ra[max_i]-remain;                         }    for(i=0;i<n;i++)    {      if(i!=max_i)      {        ra[i]=ra[i]+ra[max_i]/(n-1);            }                   }      ra[max_i]=0;i=0;    while(remain!=0)    {      if(i!=max_i)      {        ra[i]++;         remain--;                 }      i++;    }    printf("%d\n",max_i+1);  }  return 0;}
0 0