为何 70 pts?
查看原帖
为何 70 pts?
1115460
tmpliyijiang楼主2024/1/15 14:58

代码:

#include<bits/stdc++.h>
using namespace std;
int n,x;string op,t;char s[1000005];int q[1000005];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t>>n;
	int len=t.size();
	for(register int i=0;i<len;i++){
		s[i]=t[i];
	}
	for(register int i=0;i<n;i++){
		cin>>op;
		if(op=="rev"){
			q[i]=-1;
		}
		else if(op=="<"){
			cin>>x;
			x=x%len;q[i]=x;
		}
		else if(op==">"){
			cin>>x;
			x=len-x%len;q[i]=x;
		}
	}
	int cnt=0,cnt2=0,flg=1;
	for(register int i=0;i<n;i++){
		if(q[i]==-1)
		cnt++,flg=-flg;
		else {
			cnt2+=flg*q[i];
			if(cnt2<0){
				cnt2+=len*(int)ceil(-(double)cnt2/(double)len);
			}
			cnt2%=len;
		}
	}
	rotate(s,s+cnt2,s+len);
	//cout<<"upd "<<cnt<<' '<<cnt2<<endl;
	if(cnt2&1){
		reverse(s,s+len);
	}
	for(register int i=0;i<len;i++){
		cout<<s[i];
	}
	return 0;
}

提交记录

2024/1/15 14:58
加载中...