将近一个下午了,求救
查看原帖
将近一个下午了,求救
531499
windows_fleon楼主2022/9/17 17:09
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
int t,n,ans,res[N];
struct aa{
	char c;
	int bh;
}a[N];
char b[N];
bool cmp(aa x,aa y){
	if(x.c!=y.c)return x.c<y.c;
	else return x.bh<y.bh;
}
int main(){
	cin>>t;
	for(int g=1;g<=t;g++){
		cin>>b;
		n=strlen(b);
		for(int i=1;i<=n;i++){
			a[i].c=b[i-1];
			a[i].bh=i;
		}
		sort(a+1,a+n+1,cmp);
		int p=0,wei1,wei2;
		for(int i=1;i<=n;i++){
			if(a[i].bh==1) wei1=i;
			if(a[i].bh==n) wei2=i;
		}
		if(wei1<wei2){
			for(int i=wei1;i<=wei2;i++){
				res[++p]=a[i].bh;
				if(a[i].bh==n) break;
			}
		}
		else{
			for(int i=wei1;i>=wei2;i--){
				res[++p]=a[i].bh;
				if(a[i].bh==n) break;	
			}	
		}
		ans=abs(a[wei1].c-a[wei2].c);
		cout<<ans<<" "<<p<<endl;
		for(int i=1;i<=p;i++) cout<<res[i]<<" ",res[i]=0;
		cout<<endl;
		for(int i=1;i<=n;i++){
			a[i].c='\0';
			a[i].bh=0;
		}
		ans=0;
	}
	return 0;
}
2022/9/17 17:09
加载中...