本地正确SPJ错误求助
查看原帖
本地正确SPJ错误求助
835809
T_TLucas_Yin楼主2024/10/2 16:54

rt,我要崩溃了,这个到底哪里有问题,为什么交到判题机上显示样例都过不了(它的输出是正确的)。

#include<bits/stdc++.h>
using namespace std;
int t,a[1000005],topa,b[1000005],topb,c[1000005],topc,top;
struct node{
	int x,y,z;
}f[1000005];
char s[1000005];
int read(){
	int sum=0;
	char c=getchar();
	while(!isdigit(c)) c=getchar();
	while(isdigit(c)) sum=sum*10+(c-'0'),c=getchar();
	return sum;
}
bool flag[1000005];
int main(){
	t=read();
	while(t--){
		int n=0;
		while(s[n]!='\n') s[++n]=getchar();
		n--,topa=topb=topc=top=0;
		for(int i=1;i<=n;i++) flag[i]=1;
		for(int i=1;i<=n;i++){
			if(s[i]=='A') a[++topa]=i;
			if(s[i]=='P') b[++topb]=i;
			if(s[i]=='C') c[++topc]=i;
		}
		while(topa!=0&&topb!=0&&topc!=0){
			while(b[topb]>c[topc]&&topb!=0) topb--;
			while(a[topa]>b[topb]&&topa!=0) topa--;
			if(topa!=0&&topb!=0) 
				f[++top]={a[topa],b[topb],c[topc]},
				flag[a[topa]]=flag[b[topb]]=flag[c[topc]]=0,
				topa--,topb--,topc--;
		}
		bool ff=0;
		for(int i=1;i<=n;i++) if(flag[i]) printf("%c",s[i]),ff=1;
		if(!ff) printf("Perfect");
		printf("\n%d\n",top);
		for(int i=1;i<top;i++) printf("%d %d %d\n",f[i].x,f[i].y,f[i].z);	
		printf("%d %d %d",f[top].x,f[top].y,f[top].z);
		if(t>1) printf("\n");
	}
	return 0;
} 
2024/10/2 16:54
加载中...