L1-049 天梯赛座位分配

这题我认为出的不错,很考验逻辑能力,有必要记录一下

#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<math.h>
#include<map>
#include<vector>
#define maxn 405
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n,m,k;
vector<int> ve[maxn];
int a[maxn],vis[maxn];
int main()
{
    memset(vis,0,sizeof(vis));
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]*=10;
    }
    int cnt=0,p=1;
    while(cnt<n)
    {
        for(int i=1;i<=n;i++)
        {
            if(ve[i].size()<a[i])
            {
                ve[i].push_back(p);
                if(cnt==n-1)
                    p=p+2;
                else
                    p++;
            }
            if(ve[i].size()==a[i]&&vis[i]==0)
            {
                vis[i]=1;
                cnt++;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        cout<<"#"<<i<<endl;
        for(int j=0;j<ve[i].size();j++)
        {
            if((j+1)%10==0)
                cout<<ve[i][j]<<endl;
            else
                cout<<ve[i][j]<<" ";
        }
    }
    return 0;
}
View Code

 

posted on 2019-03-15 10:34  FTA_Macro  阅读(114)  评论(0编辑  收藏  举报

导航