매년 래더 대회에 참가하는 선수가 많은데, 같은 학교의 모든 선수가 서로 인접하지 않도록하는 것이 필요하고 자리를 배정하는 일은 더욱 번거로운 일입니다. 이를 위해 다음과 같은 전략을 수립합니다. 특정 경쟁 분야에 N 개의 학교가 참여하고 i 번째 학교에 M [i] 팀이 있으며 각 팀에 10 명의 선수가 있다고 가정합니다. 각 학교의 선수들을 한 열에 정렬하고 i + 1 번째 팀의 선수는 i 번째 팀의 선수보다 순위가 높습니다. 첫 번째 학교부터 각 학교의 첫 번째 팀원이 순서대로 자리를 잡은 다음 각 학교의 두 번째 팀원이 ... 등등. 학교가 하나만 남아 있고 팀에 좌석이 할당되지 않은 경우 팀원이 별도의 좌석에 앉도록 배치해야합니다. 이 질문은 1부터 시작하여 각 학교의 선수 좌석 번호를 자동으로 생성하는 프로그램을 작성해야합니다.
입력 형식 :
참가 대학 수 N (100을 넘지 않는 양의 정수)을 한 줄에 입력합니다. 두 번째 줄은 10을 초과하지 않는 양의 정수 N을 제공합니다. 여기서 i 번째 숫자는 i 번째 대학의 참가 팀 수에 해당합니다. 공백으로 구분됩니다.
출력 형식:
첫 번째 대학의 첫 번째 팀부터 시작하여 선수의 좌석 번호가 순차적으로 출력됩니다. 각 팀은 한 줄을 차지하고 좌석 번호는 1 칸으로 구분되며 줄의 시작과 끝 부분에 추가 공간이 없어야합니다. 또한 각 대학의 첫 번째 줄에서 "#X"를 눌러 1부터 시작하는 학교 번호 X를 출력합니다.
입력 샘플 :
3
3 4 2
샘플 출력 :
#1
1 4 7 10 13 16 19 22 25 28
31 34 37 40 43 46 49 52 55 58
61 63 65 67 69 71 73 75 77 79
#2
2 5 8 11 14 17 20 23 26 29
32 35 38 41 44 47 50 53 56 59
62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98 100
#3
3 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f;
priority_queue<int,vector<int>,greater<int>>q;
const int mod=10e9+7;
int M[110];
int M_large[110];
vector<int>a[110];
bool vis[110];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>M[i];
M_large[i]=M[i]*10;
}
int no=0;
int num=1;
while(no<n)
{
for(int i=0;i<n;i++)
{
if(a[i].size()<M_large[i])
{
a[i].push_back(num);
if(no==n-1)
{
num+=2;
}
else
num++;
}
if(a[i].size()==M_large[i]&&!vis[i])
{
vis[i]=true;
no++;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<"#"<<i<<endl;
for(int j=0;j<a[i-1].size();j++)
{
if((j+1)%10==0)
cout<<a[i-1][j]<<endl;
else
cout<<a[i-1][j]<<" ";
}
}
return 0;
}
나는 돼지인데 비스 [i]를 오랫동안 생각했는데 왜 추가해야하나요?