求助橙题
查看原帖
求助橙题
540363
AKPC楼主2024/8/5 21:03

萌新真的不知道为什么 RE 这么多点。。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
inline int read(){
	int res=0,f=1;char c=getchar();
	while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
	while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
	return res*f;
}
const int N=1e6+5;
struct Deque{
	vector<int>model,moder;
	void push_back(int x) {moder.push_back(x);}
	void push_front(int x) {model.push_back(x);}
	void pop_back() {moder.pop_back();}
	void pop_front() {model.pop_back();}
	int size() {return moder.size()+model.size();}
	int gets(int x){
		if (model.size()>=x) return model[model.size()-x];
		if (moder.size()+model.size()>=x) return moder[x-model.size()-1];
		return -1;
	}
}q[N];
signed main(){
	int T=read();
	while (T--){
		string s;
		cin>>s;
		if (s=="push_back"){
			int a=read(),x=read();
			q[a].push_back(x);
		}
		if (s=="push_front"){
			int a=read(),x=read();
			q[a].push_front(x);
		}
		if (s=="pop_back"){
			int a=read();
			if (q[a].size()==0) continue;
			q[a].pop_back();
		}
		if (s=="pop_front"){
			int a=read();
			if (q[a].size()==0) continue;
			q[a].pop_front();
		}
		if (s=="size"){
			int a=read();
			cout<<q[a].size()<<'\n';
		}
		if (s=="front"){
			int a=read();
			if (q[a].size()==0) continue;
			cout<<q[a].gets(1)<<'\n';
		}
		if (s=="back"){
			int a=read();
			if (q[a].size()==0) continue;
			cout<<q[a].gets(q[a].size())<<'\n';
		}
	}
	return 0;
}
2024/8/5 21:03
加载中...