好恶心的题

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

最新文章

  1. js实现动画效果框架
  2. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
  3. Ext.js中的tip事件实际使用
  4. shell中&amp;&amp;和||的使用方法_转
  5. Android应用换肤总结
  6. 使用UIImagePickerController时3DTouch引起的Crash问题的解决--备用
  7. C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。
  8. SSD 和 SAS 意外造 raid 1
  9. reactjs Uncaught TypeError: Cannot read property &#39;location&#39; of undefined
  10. 深入理解计算机系统chapter1
  11. [转载] Redis-benchmark使用总结
  12. ubuntu 开发环境配置及安装 nodejs
  13. 占位符的使用和PreparedStatement接口使用:
  14. pdb调试神器使用终极指南
  15. OpenStack-Neutron-Fwaas-代码【二】
  16. java文章标题及文章相似度计算hash算法实现
  17. Android中的task和stack
  18. html5水平方向重力感应
  19. 在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
  20. LeetCode题解之Peak Index in a MountainArray

热门文章

  1. ajax的原理及实现方式
  2. Duilib教程-HelloDuilib及DuiDesigner的简单使用
  3. HTTP 基础术语
  4. InstallShield程序打包图解
  5. 【转】Go Channels
  6. poj_3579 二分法
  7. Linux 启动文件、设置环境变量的位置
  8. oracle的connect by level的示例
  9. 日志记录---log4j详解
  10. Oracle自动备份脚本的实现