1115-Multi-column List
大学入学してからAOJを解く速度が鈍化してる…
考え方
昨日のBottomCoderのMediumみたいな実装問題。
実装(C++)
#include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <climits> #include <cctype> #include <ctime> #include <cassert> #include <cwchar> #include <cstdarg> #include <cwctype> #include <queue> #include <stack> #include <algorithm> #include <list> #include <vector> #include <set> #include <map> #include <iostream> #include <deque> #include <complex> #include <string> #include <functional> #include <iomanip> #include <sstream> #include <tr1/unordered_map> #include <boost/foreach.hpp> #include <boost/lexical_cast.hpp> #define foreach BOOST_FOREACH using namespace std; using namespace tr1; using namespace boost; typedef long long int lli; int plen,cnum,width,cspace; string String(int Number,string Character){ string ret=""; for(int i=0;i<Number;i++)ret+=Character; return ret; } int main() { for(;;){ string t; getline(cin,t); plen=boost::lexical_cast<int>(t); if(!plen)break; getline(cin,t); cnum=boost::lexical_cast<int>(t); getline(cin,t); width=boost::lexical_cast<int>(t); getline(cin,t); cspace=boost::lexical_cast<int>(t); deque<string> in; while(1){ getline(cin,t); if(t=="?")break; in.push_back(t); } deque<string> str; foreach(string t,in){ for(int i=0;i<(int)t.size();i+=width){ str.push_back(t.substr(i,min(width,(int)t.size()-i))); } if(t=="")str.push_back(""); } for(;;){ if((str.size()%(plen*cnum))==0)break; str.push_back(""); } for(int i=0;i<(int)str.size();i++){ str[i]+=String(width-str[i].size(),"."); } vector<string> p(plen); while(!str.empty()){ for(int i=0;i<plen;i++){ p[i]=""; } for(int i=0;i<cnum;i++){ for(int j=0;j<plen;j++){ if(i)p[j]+=String(cspace,"."); p[j]+=str.front(); str.pop_front(); } } for(int i=0;i<plen;i++){ cout<<p[i]<<endl; } cout<<"#"<<endl; } cout<<"?"<<endl; } return 0; }