1. 程式人生 > 其它 >排位賽第二場 K. Citations

排位賽第二場 K. Citations

題目:

思路:

讀取:我們採用 getline(cin,s)來

觀察題目發現,每個}的上一行的最後是沒有","的,我們讀取的時候補上
這裡有坑:當用讀入第二行的2時,我們需要用一個getline把整行讀掉

輸出:

我們採用字串排序的方式把所有的物件標準化。
然後分析作者這個物件,對不同的情況分類輸出。

程式碼

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
signed main()
{
	IOS;
	int t;
	string s;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		getline(cin,s);
		for(int i=1;i<=n;i++)
		{
			vector<string>a(10);
			for(auto & it:a)
			{
				getline(cin,it);
				if(it[it.size()-1]!=',')
				{
					it+=",";
				}
			}
			sort(a.begin()+1,a.end()-1);    //這裡sort容易寫錯,注意區間是 左閉右開 寫成[a.beging()+1,a.begin()+8+1);
			cout<<a[1].substr(8,2);
			string ans;
			for(int i=8;i<a[1].length();i++)
			{
				if(a[1][i]=='}')
				{
					ans+=". ";
					break;
				}
				if(a[1][i]==' '&&a[1][i-1]!=',')
				{
					ans+=". ";
					ans+=a[1][i+1];
				}else if(a[1][i]==' '&&a[1][i-1]==',')
				{
					ans+=", ";
					ans+=a[1].substr(i+1,2);
				}
				
			}
			ans=ans+a[6].substr(7,a[6].length()-9)+". ";
			ans=ans+a[2].substr(9,a[2].length()-11)+". ";
			ans=ans+a[8].substr(6,a[8].length()-8)+";";
			ans=ans+a[7].substr(8,a[7].length()-10);
			ans=ans+"("+a[3].substr(8,a[3].length()-10)+")"+":";
			ans=ans+a[4].substr(7,a[4].length()-9)+".";
			cout<<ans<<"\n"; 
		}
	}
}