uva400

#include <cstdio>
#include <cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
#include<set>
#include<iomanip>
#include<map>
#include<queue>
#include<sstream>
#include<ctype.h>
using namespace std;
int main()
{
    int n;
    string filename[105];
    int tu[105][100];
    while (scanf("%d",&n)!=-1)
    {
        int maxn=1,cnt=0;
        map<int,string>s;
        for (int i=0; i<n; i++)
        {
            cin>>filename[i];
            if ((int)filename[i].length()>maxn)
                maxn=(int)filename[i].length();
        }
        sort(filename,filename+n);
        for (int i=0;i<n;i++)
            s[i]=filename[i];
        int c=62/(maxn+2);
        int r;
        if (n%c==0)
            r=n/c;
        else
            r=n/c+1;
        //cout<<r<<endl<<c;
        for (int j=0; j<c; j++)
        {
            for (int i=0; i<r; i++)
            {
                tu[i][j]=cnt;
                cnt++;
            }
        }
//        for (int i=0; i<r; i++)
//        {
//            for (int j=0; j<c; j++)
//            {
//                if (j==c-1)
//                    cout<<tu[i][j]<<endl;
//                else
//                    cout<<tu[i][j];
//            }
//
//        }
        int left=n-r*(c-1);
        cout<<setiosflags(ios::left);
         for (int i=1;i<=60;i++)
            printf("-");
         printf("\n");
        for (int i=0;i<r;i++)
        {
            for (int j=0;j<c;j++)
            {
                if (i<left)
                {
                    if (j!=c-1)
                    {
                        cout<<setw(maxn+2)<<s[tu[i][j]];
                    }
                    if (j==c-1)
                    {
                        cout<<setw(maxn)<<s[tu[i][j]]<<endl;
                    }
                }
                else
                {
                    if (j<c-2)
                    {
                        cout<<setw(maxn+2)<<s[tu[i][j]];
                    }
                    if (j==c-2)
                    {
                        cout<<setw(maxn+2)<<s[tu[i][j]]<<endl;
                    }
                }
            }
        }

    }

    return 0;
}
posted @ 2019-04-02 19:26  啊哈啦  阅读(95)  评论(0编辑  收藏  举报