joylintp

?_?

Jan 1st, 2022
1,134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define NUMCAR 1000
  4. #define NUMROW 20
  5. #define NUMSEAT 5
  6.  
  7. typedef struct seat{
  8.     int car;
  9.     int row;
  10.     int seat;
  11. }seat;
  12.  
  13. int nextSeat(seat *ptrSeat, int n){
  14.     if(ptrSeat->seat == 4){
  15.         if(ptrSeat->row == 19){
  16.             if(ptrSeat->car == n-1){
  17.                 return 0;//FULL
  18.             }
  19.             else{
  20.                 ptrSeat->car++;
  21.                 ptrSeat->row = 0;
  22.             }
  23.         }
  24.         else
  25.             ptrSeat->row++;
  26.         ptrSeat->seat = 0;
  27.     }
  28.     else
  29.         ptrSeat->seat++;
  30.     return 1;
  31. }
  32.  
  33. void findSingle(int train[NUMCAR][NUMROW][NUMSEAT], seat *ptrSingle, int n, int Double){
  34.     while(train[ptrSingle->car][ptrSingle->row][ptrSingle->seat])
  35.         nextSeat(ptrSingle, n);
  36.     train[ptrSingle->car][ptrSingle->row][ptrSingle->seat] = 1;
  37.     printf("%d %d %d %s", ptrSingle->car+1, ptrSingle->row+1, ptrSingle->seat+1, Double == 1 ? "" : "\n");
  38. }
  39.  
  40. void findDouble(int train[NUMCAR][NUMROW][NUMSEAT], seat *ptrTail, seat *ptrSingle, int n){
  41.     int together = 1;
  42.     while(train[ptrTail->car][ptrTail->row][ptrTail->seat] && together == 1)
  43.         together = nextSeat(ptrTail, n);
  44.     if(ptrTail->seat == 2)
  45.         nextSeat(ptrTail, n);
  46.     else if(ptrTail->seat == 4)
  47.         together = nextSeat(ptrTail, n);
  48.     if(together){
  49.         train[ptrTail->car][ptrTail->row][ptrTail->seat] = 1;
  50.         train[ptrTail->car][ptrTail->row][ptrTail->seat+1] = 1;
  51.         printf("%d %d %d %d %d %d \n", ptrTail->car+1, ptrTail->row+1, ptrTail->seat+1, ptrTail->car+1, ptrTail->row+1, (++ptrTail->seat)+1);
  52.     }
  53.     else{
  54.         findSingle(train, ptrSingle, n, 1);
  55.         findSingle(train, ptrSingle, n, 0);
  56.     }
  57. }
  58.  
  59. int main(){
  60.     int train[NUMCAR][NUMROW][NUMSEAT] = {0};
  61.     seat ptrTail;
  62.     ptrTail.car = 0;
  63.     ptrTail.row = 0;
  64.     ptrTail.seat = 0;
  65.  
  66.     seat ptrSingle;
  67.     ptrSingle.car = 0;
  68.     ptrSingle.row = 0;
  69.     ptrSingle.seat = 0;
  70.  
  71.     int n, R;
  72.     scanf("%d", &n);//number of cars in the train
  73.  
  74.     while(scanf("%d", &R) != EOF){
  75.         if(R == 2)
  76.             findDouble(train, &ptrTail, &ptrSingle, n);
  77.         else
  78.             findSingle(train, &ptrSingle, n, 0);
  79.     }
  80.     return 0;
  81. }
  82.  
Advertisement
Add Comment
Please, Sign In to add comment