榜单

题目比较淡定,按照题目的意思敲就好了。

#include<stdio.h> #include<iostream> #include<set> #include<string> #include<algorithm> using namespace std; struct node {     string name;     int list; }sing[100],slist[10]; bool cmp(node a,node b) {     return a.list>b.list; } bool cmp1(node a,node b) {     return a.list<b.list; } int main() {     int n,sum=0;     int i,j;     set<string> st;     int y=1;     while(scanf("%d",&n)!=EOF)     {         if(!n)  //本组数据输入完成,数据清零             st.clear(),sum=0,y=1;         else         {             printf("----------------WEEK %d----------------\n",y++);             for(i=0;i<n;i++)                 cin>>slist[i].name>>slist[i].list;             sort(slist,slist+n,cmp);             for(j=0;j<sum;j++)                 sing[j].list=6;             for(i=0;i<5;i++)             {                 printf("%d.",i+1);                 if(st.count(slist[i].name)) //旧歌                 {                     for(j=0;j<sum;j++)                     {                         if(sing[j].name==slist[i].name)                         {                             if(j>i) //up                                 printf("*UP*    "),sing[j].list=i+1;                             else if(j<i)//DOWN                                 printf("*DOWN*  "),sing[j].list=i+1;                             else  //stay                                 printf("*STAY*  "),sing[j].list=i+1;                             break;                         }                     }                 }                 else  //旧歌                 {                     st.insert(slist[i].name);                     printf("*NEW*   ");                     sing[sum].name=slist[i].name;                     sing[sum++].list=i+1;                 }                 cout<<slist[i].name<<endl;             }             for(i=5;i<n;i++)  //未上榜的哥             {                 if(!st.count(slist[i].name)) //新歌                 {                     st.insert(slist[i].name);                     sing[sum].name=slist[i].name;                     sing[sum++].list=i+1;                 }             }             sort(sing,sing+sum,cmp1);         }     }     return 0; }