CSP 201609-2 火车购票 模拟
#include<iostream>
using namespace std;
#include<cstring>
int n;
int tic[105];
int vis[25][8];
int main()
{
cin>>n;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%d",&tic[i]);
int ok;
for(int i=0;i<n;i++)
{
int tt=tic[i];
for(int row=1;row<=20;row++)
{
ok=0;
for(int k=1;k<=5;k++)
{
ok=1;
for(int j=k;j<=k+tt-1;j++)
{
if(j>5)
{
ok=0;
break;
}
if(vis[row][j])
{
ok=0;
break;
}
}
if(ok)
{
for(int m=k;m<=k+tt-1;m++)
{
vis[row][m]=1;
printf("%d ",(row-1)*5+m);
}
cout<<endl;
break;
}
}
if(ok)
break;
}
if(!ok)
{
int cnt=0;
for(int m=1;m<=20;m++)
{
int yes=1;
for(int n=1;n<=5;n++)
{
if(!vis[m][n])
{
cnt++;
vis[m][n]=1;
printf("%d ",(m-1)*5+n);
if(cnt==tt)
{
printf("\n");
yes=0;
break;
}
}
}
if(!yes)
break;
}
}
}
return 0;
}