#448. CSP-J模拟套题2-20

CSP-J模拟套题2-20

  1. (完善程序)

设计一段程序,实现以下操作:

  1. I x:在当前光标前插入数组 x。

  2. D:删除当前光标前的数字。

  3. L:光标向前移动一个数字。

  4. R:光标向后移动一个数字。

  5. Q k:输出光标之前的数列 {a1,a2,...,an} 中第 k 位及之前的最大前缀和,保证 k ≤ n。

#include<bits/stdc++.h>
define N 1000010
using namespace std;
int s1[N],s2[N];
int ans[N],S[N];
int top1,top2,n;

int main()
{
    scanf(“%d”,&n);
    ans[0]=-(1<<30);
    for(int i=1;i<=n;i++)
    {
        char fl; cin>>fl;
        if(fl=='I')
        {
            int x; scanf("%d",&x);
            _________________________
            S[top1]=S[top1-1]+x;
            ans[top1]=max(ansp[top1-1],S[top1]);
        }
        if(fl=='D') _________________________;
        if(fl=='L') _________________________;
        if(fl=='R')
        {
            int x=_________________________;
            _________________________;
            S[top1]=S[top1-1]+x;
            ans[top1]=max(ans[top1-1],S[top1]);
        }
        if(fl=='Q')
        {
            int x; scanf("%d",&x);
            printf("%d\n",ans[x]);
        }
    }
    return 0;
}

① 处应填( )。

{{ select(1) }}

  • s1[++top1]=x;
  • s1[top1++]=x;
  • s2[++top2]=x;
  • s2[top2++]=x;

② 处应填( )。

{{ select(2) }}

  • top1++
  • top2++
  • top1--
  • top2--

③ 处应填( )。

{{ select(3) }}

  • s1[++top1]=s2[top2--];
  • s1[++top2]=s2[top1--];
  • s2[++top1]=s1[top2--];
  • s2[++top2]=s1[top1--];

④ 处应填( )。

{{ select(4) }}

  • s2[top2++]
  • s1[top1++]
  • s2[top2--]
  • s1[top1--]

⑤ 处应填( )。

{{ select(5) }}

  • s1[++top1]=x;
  • s1[--top1]=x;
  • s2[++top2]=x;
  • s2[--top2]=x;