这道题哪里错了?(50分,站外题)
  • 板块学术版
  • 楼主ONT_
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/1/8 21:59
  • 上次更新2023/10/28 12:38:02
查看原帖
这道题哪里错了?(50分,站外题)
380235
ONT_楼主2022/1/8 21:59

现在有一个长度为n的数组,现在有m个操作,操作分别有:

1:删除当前数组最后一个元素,如果数组中没有元素则忽略

2 x:在当前数组最后一个数后面插入一个数x

3:删除当前数组中第一个元素,如果数组中没有元素则忽略

4 x:在当前数组第一个元素前面插入一个数x

输入格式 第一行输入一个数n表示原数组长度

第二行输入n个数表示这个数组

第三行输入一个数m表示操作数

后面m行操作


#include<bits/stdc++.h>
using namespace std;
const int maxn=10000000+100;
int n,x,q[maxn],L,R,opt,m,ans=0;
long long s[maxn];
int main()
{
	cin>>n;
	for(int i=1+1000005;i<=n+1000005;i++)
	{
		cin>>s[i];
	}
	L=1+1000005;
	R=n+1000005;
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		scanf("%d",&opt);
		if(opt==1)
		{
			if(R>L+1)
			{
				R--;
			}
		} 
		else if(opt==2)
		{
			R++;
			scanf("%d",&x);
			s[R]=x;
		}
		else if(opt==3)
		{
			if(R>L)
			{
				L++;
			}
		}
		else if(opt==4)
		{
			L--;
			scanf("%d",&x);
			s[L]=x;
		}
	}
	for(int i=L;i<=R;i++)
	{
		ans+=s[i];
	}
	cout<<ans;
	return 0;
}
2022/1/8 21:59
加载中...