这道题题的意思很简单,实现只需要用双端队列就可以实现了,主要问题就在于它的输入格式(这是我头一次遇见这个东西);
就是在提交的时候需要有一个重定向:
但什么是重定向?
我是这样理解的:就是在一个头文件里,不是有宏定义吗?(如果熟悉Java的话,肯定就明白了),为了和文件里面的不重叠(就是不发生歧义)所以用了重定向?嘻嘻,其实在以前学习重定向的时候也没搞懂那是什么东西;现在明白了;就是来控制语句块执不执行;
常用的格式(就是把文件打开,提交上去后台自己读数据吧(我想的)):
//第一种
ifstream in("data.txt");
ofstream out("data.txt");
//第二种//注意#if 需要和一个#endif连用
#ifndef Local//这大写的名字可以随便写//意思就是如果没有定义Local这个常量就执行以下的语句块
ifstream in("data.txt");
ofstream out("data.txt");
#endif
其实我觉得第一种好理解些,因为我不经常用重定向;只是了解一下这个是个啥就完了(我目前就认为是一个判断语句块执不执行);
最后解决这道题就很简单了:
#include<bits/stdc++.h>
using namespace std;
deque<int> d;
int main(){
#ifndef Local
ifstream in("data.txt");
ofstream out("data.txt");
#endif
int n;
char a,b;
int num,id=1;
cin>>n;
while(n--){ //这些代码按照题的理解很容易就懂了
cin>>a>>b;
if(a=='D') cin>>num;
if(a=='D'){
if(b=='R'){
for(int i=0;i<num;i++){
d.pop_back();
}
}else{
for(int i=0;i<num;i++){
d.pop_front();
}
}
}else{
if(b=='L') d.push_front(id++);
else d.push_back(id++);
}
// for(int i=0;i<d.size();i++) cout<<d[i]<<" ";
// cout<<endl;
}
for(int i=0;i<d.size();i++){
printf("%d\n",d[i]);
}
return 0;
}