第二个测试点过不去,玄关求调
查看原帖
第二个测试点过不去,玄关求调
821460
2021JPL楼主2024/10/15 22:08
#include <bits/stdc++.h>
#include <queue> 

#define MAXC 30000100

using namespace std;

int INA;
queue <int> aq,pq,cq;
string IN;

struct node
{
	int ad,pd,cd;
}apc[MAXC];

void not_apc(int len)
{
	int ans=0;
	bool depend=true;
	
	while(!aq.empty() && !pq.empty() && !cq.empty())
	{
		int anow,pnow,cnow;
		anow=aq.front();
		aq.pop();
		
		while(pq.front()<=anow && !pq.empty()) pq.pop(),depend=false;
		if(pq.empty()) break;
		pnow=pq.front();
		pq.pop();
		
		while(cq.front()<=pnow && !cq.empty()) cq.pop(),depend=false;
		if(cq.empty()) break;
		cnow=cq.front();
		cq.pop();
		
		apc[++ans].ad=anow+1;
		apc[ans].pd=pnow+1;
		apc[ans].cd=cnow+1;
		IN[anow]='O';
		IN[pnow]='O';
		IN[cnow]='O';
	}
	
	if(!pq.empty() || !cq.empty() || !aq.empty()) depend=false;
	if(depend) cout<<"Perfact"<<endl;
	else
	{
		for(int i=0;i<len;i++)
		{
			if(IN[i]=='O') continue;
			cout<<IN[i];
		}
		cout<<endl;
	}
	cout<<ans<<endl;
	for(int i=1;i<=ans;i++) cout<<apc[i].ad<<" "<<apc[i].pd<<" "<<apc[i].cd<<endl;
	
	return;
}

void clear_queue(queue<int>& q)
{
	queue <int> empty;
	swap(empty,q);
}

int main()
{
	cin>>INA;
	for(int i=1,lin;i<=INA;i++)
	{
		cin>>IN;
		lin=IN.size();
		for(int i=0;i<lin;i++)
		{
			if(IN[i]=='A') aq.push(i);
			if(IN[i]=='P') pq.push(i);
			if(IN[i]=='C') cq.push(i);
		}
		not_apc(lin);
		
		clear_queue(aq);
		clear_queue(pq);
		clear_queue(cq);
	}
	return 0;
}
2024/10/15 22:08
加载中...