Educational Codeforces Round 11B. Seating On Bus 模拟
地址:http://codeforces.com/contest/660/problem/B
题目:
Consider 2n rows of the seats in a bus. n rows of the seats on the left and n rows of the seats on the right. Each row can be filled by two people. So the total capacity of the bus is 4n.
Consider that m (m ≤ 4n) people occupy the seats in the bus. The passengers entering the bus are numbered from 1 to m (in the order of their entering the bus). The pattern of the seat occupation is as below:
1-st row left window seat, 1-st row right window seat, 2-nd row left window seat, 2-nd row right window seat, ... , n-th row left window seat,n-th row right window seat.
After occupying all the window seats (for m > 2n) the non-window seats are occupied:
1-st row left non-window seat, 1-st row right non-window seat, ... , n-th row left non-window seat, n-th row right non-window seat.
All the passengers go to a single final destination. In the final destination, the passengers get off in the given order.
1-st row left non-window seat, 1-st row left window seat, 1-st row right non-window seat, 1-st row right window seat, ... , n-th row left non-window seat, n-th row left window seat, n-th row right non-window seat, n-th row right window seat.
You are given the values n and m. Output m numbers from 1 to m, the order in which the passengers will get off the bus.
The only line contains two integers, n and m (1 ≤ n ≤ 100, 1 ≤ m ≤ 4n) — the number of pairs of rows and the number of passengers.
Print m distinct integers from 1 to m — the order in which the passengers will get off the bus.
2 7
5 1 6 2 7 3 4
9 36
19 1 20 2 21 3 22 4 23 5 24 6 25 7 26 8 27 9 28 10 29 11 30 12 31 13 32 14 33 15 34 16 35 17 36 18
思路:直接模拟就好了,座位位置找规律就好了,别告诉我你找不到规律、、、、
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cmath> 5 #include <cstring> 6 #include <queue> 7 #include <stack> 8 #include <map> 9 #include <vector> 10 11 #define PI acos((double)-1) 12 #define E exp(double(1)) 13 using namespace std; 14 int seat[110][5]; 15 int main (void) 16 { 17 int n,m; 18 cin>>n>>m; 19 memset(seat,0,sizeof(seat)); 20 for(int i=1;i<=m;i++) 21 if(i<=2*n) 22 { 23 if(i%2 == 1) 24 seat[(i+1)/2][2] = i; 25 else 26 seat[i/2][4] = i; 27 } 28 else 29 { 30 int t = i-2*n; 31 if(t%2 == 1) 32 seat[(t+1)/2][1]=i; 33 else 34 seat[t/2][3] = i; 35 } 36 for(int i=1,k=1;k<=m && i<=n;i++) 37 for(int j = 1;j<=4;j++) 38 if(seat[i][j]) 39 { 40 if(k == m) 41 printf("%d\n",seat[i][j]); 42 else 43 printf("%d ",seat[i][j]); 44 k++; 45 } 46 47 return 0; 48 }
作者:weeping
出处:www.cnblogs.com/weeping/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。