站外题qwq
现在你要支持几种操作:
push x,将 x 这个元素放到队尾。
pop,表示将队首的元素删除。
query k,询问从队首往后数第 k 个元素是多少。
第一行一个整数 m,表示操作个数。
接下来 m 行,每行一个上面所述的操作。
输出若干行,对于每个查询操作,输出答案。
10
push 1
push 2
query 1
query 2
push 3
query 1
pop
query 1
push 4
query 1
1
2
1
2
2
对于 100% 的数据,保证 1≤m≤106。
对于 push 操作,保证 1≤x≤106。
对于 pop 操作,保证队列非空。
对于 query 操作,保证 k≥1 且 k 不超过队列里面的元素个数。
保证所有时刻,队列长度 len≤1000。
#include <bits/stdc++.h>
typedef long long ll;
const int len = 1001;
using namespace std;
int n, l = 1, r, que[10010];
string s;
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
int k;
cin >> s;
if(s == "query")
scanf("%d", &k), printf("%d\n", que[(l+k-1)%len]);
else if(s == "push")
scanf("%d", &k), r = (r+1)%len, que[r] = k;
else l = (l+1)%len;
}
return 0;
}
不知道为啥 TLE,明明代码复杂度 O(n)
/kel