排位賽第二場 K. Citations
阿新 • • 發佈:2022-03-15
題目:
思路:
讀取:我們採用 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"; } } }