求助超时代码
  • 板块灌水区
  • 楼主sundyLIUXY
  • 当前回复23
  • 已保存回复23
  • 发布时间2023/4/29 11:44
  • 上次更新2023/10/23 17:17:18
查看原帖
求助超时代码
706737
sundyLIUXY楼主2023/4/29 11:44

站外题qwq


现在你要支持几种操作:

push x,将 xx 这个元素放到队尾。

pop,表示将队首的元素删除。

query k,询问从队首往后数第 kk 个元素是多少。

输入格式

第一行一个整数 mm,表示操作个数。

接下来 mm 行,每行一个上面所述的操作。

输出格式

输出若干行,对于每个查询操作,输出答案。

样例输入
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
数据规模

对于 100100% 的数据,保证 1≤m≤1061≤m≤106。

对于 push 操作,保证 1≤x≤1061≤x≤106。

对于 pop 操作,保证队列非空。

对于 query 操作,保证 k≥1k≥1 且 kk 不超过队列里面的元素个数。

保证所有时刻,队列长度 len≤1000len≤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

2023/4/29 11:44
加载中...