201609-2 | |
質問名: | 列車チケット |
制限時間: | 1.0秒 |
メモリ制限: | 256.0MB |
問題の説明: | 問題の説明 車両の座席割り当てを処理するために、鉄道発券システムの簡単な座席割り当てアルゴリズムを実装してください。 入力フォーマット 入力の最初の行には、チケット購入指示の数を表す整数nが含まれています。 出力フォーマット n行を 出力します。各行は、命令の処理結果に対応しています。 入力例 4 出力例 1 2 サンプル概要 1)2枚のチケットを購入して1席と2席を獲得します。 評価のユースケースの規模と規則 すべての評価のユースケースの場合、1≤ N ≤100、および購入したすべてのチケットの合計が100を超えてはなりません。 |
import java.util.Scanner;
public class 火车购票 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n+1];
for(int i=1;i<=n;i++){
a[i]=sc.nextInt();
}
int[][] pos=new int[20][5];
for(int i=1;i<=n;i++){
int mark=-1;
int count=0;
for(int x=0;x<20;x++){
for(int y=0;y<5;y++){
if(pos[x][y]==0&&a[i]<=5){
count++;
if(count==a[i]){
mark=y+1-a[i];
for(int r=0;r<a[i];r++){
pos[x][mark+r]=1;
System.out.print(5*x+mark+1+r+" ");
}
System.out.println();
break;
}
}
}
count=0;
if(mark!=-1){
break;
}else{
count=0;
continue;
}
}
if(mark==-1){
count=0;
for(int k=0;k<20;k++){
for(int j=0;j<5;j++){
if(pos[k][j]==0){
count++;
pos[k][j]=1;
System.out.print(k*5+(j+1)+" ");
if(count==a[i]){
System.out.println();
break;
}
}
}
if(count==a[i]){
break;
}else{
continue;
}
}
}
}
}
}