码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 5017

时间:2014-10-22 21:47:55      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   sp   

好恶心的题

bubuko.com,布布扣
#include <cstdio>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
typedef __int64 ll;
struct point{
   ll word,priori;
}P[50005];
char T[8][100]={ {"Add"},{"Close"},{"Chat"},{"Rotate"},{"Prior"},{"Choose"},{"Top"},{"Untop"}};
int sz,op,always=-1;
void per(int x){
    point ttt = P[x];
    for(int i=x; i>0; --i)
        P[i]=P[i-1];
    P[0]=ttt;
}
void last(int x){
    point ttt= P[x];
    for(int i=x; i<sz-1; ++i)
    P[i]=P[i+1];
    P[sz-1]=ttt;
}
void solve0(){
     ll id;
     scanf("%I64d",&id);
     int loc=-1;
     for(int i=0; i<sz; ++i)
     if( P[i].priori == id ){
           loc=i; break;
     }
     if( loc == -1 ){
         P[sz].word=0;
         P[sz].priori=id;
         sz++;
         printf("Operation #%d: success.\n",op++);
     }else{
         printf("Operation #%d: same priority.\n",op++);
     }
}
void solve1(){
    ll id;
    scanf("%I64d",&id);
    int loc=-1;
    for(int i=0; i<sz; ++i)
         if(P[i].priori==id){
            loc=i; break;
         }
    if(loc==-1){
         printf("Operation #%d: invalid priority.\n",op++);
    }else {
        printf("Operation #%d: close %I64d with %I64d.\n",op++,P[loc].priori,P[loc].word);
        if(P[loc].priori==always) always=-1;
        for(int i=loc+1; i<sz; ++i)
             P[i-1]=P[i];
        sz--;
    }
}
void solve2(){
   ll id;
   scanf("%I64d",&id);
   if(sz==0){ ///*****************************
      printf("Operation #%d: empty.\n",op++);
   }else{
      if(always!=-1){
            for(int i=0; i<sz; ++i)
            if(P[i].priori==always){
                 P[i].word+=id; break;
            }
      }else P[0].word+= id;
      printf("Operation #%d: success.\n",op++);
   }
}
void solve3(){
    ll id;
    scanf("%I64d",&id);
    id--;
    if( id<0 || id >= sz){
         printf("Operation #%d: out of range.\n",op++);
    }else{
             point ttt=P[id];
             for(int i=id; i>0; --i)
                P[i]=P[i-1];
             P[0]=ttt;
             printf("Operation #%d: success.\n",op++);
    }
}
void solve4(){
    if(sz==0){
        printf("Operation #%d: empty.\n",op++);
    }else{
        int loc=0;
        ll hi=-1;
        for(int i=0; i<sz; ++i)
            if(P[i].priori>hi) hi=P[i].priori,loc=i;
             point ttt=P[loc];
             for(int i=loc; i>0; --i)
                P[i]=P[i-1];
                P[0]=ttt;
         printf("Operation #%d: success.\n",op++);
    }
}
void solve5(){
     ll id;
     scanf("%I64d",&id);
     int loc=-1;
     for(int i=0; i<sz; ++i)
     if(P[i].priori==id){
         loc=i; break;
     }
     if(loc==-1){
         printf("Operation #%d: invalid priority.\n",op++); return;
     }
             point ttt=P[ loc ];
             for(int i=loc; i>0; --i)
                P[i]=P[i-1];
                P[0]=ttt;
         printf("Operation #%d: success.\n",op++);
}
void solve6(){
      ll id;
      scanf("%I64d",&id);
      int loc=-1;
      for(int i=0; i<sz; ++i)
         if(P[i].priori==id){
            loc=i; break;
         }
      if(loc==-1){
         printf("Operation #%d: invalid priority.\n",op++); return;
      }
      always=id;
      printf("Operation #%d: success.\n",op++);
}
void solve7(){
      if(always==-1){
          printf("Operation #%d: no such person.\n",op++); return;
      }
      always=-1;
      printf("Operation #%d: success.\n",op++);
}
int main(){

    int cas;
    scanf("%d",&cas);
     char str[100];
     for(int cc= 1; cc<=cas; ++cc){
            int n;
            scanf("%d",&n);
            always=-1;
            sz=0;op=1;
            for(int i=0; i<n; ++i){
                 scanf("%s",str);
                 if(strcmp(str,T[0])==0) solve0();
                 else if(strcmp(str,T[1])==0) solve1();
                 else if(strcmp(str,T[2])==0) solve2();
                 else if(strcmp(str,T[3])==0) solve3();
                 else if(strcmp(str,T[4])==0) solve4();
                 else if(strcmp(str,T[5])==0) solve5();
                 else if(strcmp(str,T[6])==0) solve6();
                 else if(strcmp(str,T[7])==0) solve7();
                // printf(".\n");
             }
             if(always!=-1){
                 for(int i=0; i<sz; ++i)
                 if(P[i].priori==always&&P[i].word!=0){
                    printf("Bye %I64d: %I64d\n",P[i].priori,P[i].word); break;
                 }
             }
            for(int i=0; i<sz; ++i)
              if(P[i].priori!=always&&P[i].word!=0){
                     printf("Bye %I64d: %I64d\n",P[i].priori,P[i].word);
            }

     }
  return 0;
}
View Code

 

hdu 5017

标签:style   blog   http   color   io   os   ar   for   sp   

原文地址:http://www.cnblogs.com/Opaser/p/4044261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!