ZOJ 1201 答案

#include<iostream>
#include<list>
#include<vector>
using namespace std;

vector<int> P;
list<int> I;

int SearchI(int p)
{
	for(int i=0;i<(int)P.size();i++)
	{
		if(P[i] == p)
			return i++;
	}
	return 0;
}

int main()
{
	int n;
	while(cin>>n)
	{
		if(n ==0)
			break;
		P.clear();
		I.clear();
		char p;
		cin>>p;
		if(p == 'P')
		{
			for(int i=0;i<n;i++)//输入数据
			{
				int d;
				cin>>d;
				P.push_back(d);
			}
			//计算
			for(int i=0;i<n;i++)
			{
				int count =0;
				int q = SearchI(i+1);
				for(int j=0;j<q;j++)
				{
					if(P[j]>i+1)
						count++;
				}
				if(i > 0)
					cout<<" ";
				cout<<count;
			}
		}
		if(p == 'I')
		{
			//输入
			for(int i=0;i<n;i++)
			{
				int d ;
				cin>>d;
				P.push_back(d);
				I.push_back(0);
			}
			//计算
			
			for(int i=n;i>0;i--)
			{
				list<int>::iterator ite = I.begin();
				for(int j=0;j<P[i-1];j++)
				{
					++ite;
				}
				I.insert(ite,i);
			}
			I.remove(0);
			//输出
			int f =0;
			list<int>::iterator ite = I.begin();
			while(ite != I.end())
			{
				if(f > 0)
					cout<<" ";
				cout<<*ite;
				f++;
				++ite;
			}
		}
		cout<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_40902100/article/details/82930664
ZOJ