Advertisement
SuitNdtie

FallingBall undone

May 14th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.     int T;
  6.     scanf("%d",&T);
  7.     for(int t = 1 ; t <= T ; t ++){
  8.         int n;
  9.         scanf("%d",&n);
  10.         int cball[n];
  11.         int sumball = 0;
  12.         for(int i = 0 ; i < n ; i ++){
  13.             scanf("%d",&cball[i]);
  14.             sumball += cball[i];
  15.         }
  16.         if(sumball != n || cball[0] == 0 || cball[n-1] == 0){
  17.             printf("Case #%d: IMPOSSIBLE\n",t);
  18.             continue;
  19.         }
  20.         int nextball = 0;
  21.        
  22.         char ans[110][n+1];
  23.         for(int i = 0 ; i < 110 ; i++){
  24.             for(int j = 0 ; j < n ; j ++)ans[i][j] = '.';
  25.             ans[i][n] = '\0';
  26.         }
  27.         int maxlevel = 0;
  28.         for(int i = 0 ; i < n ; i ++){
  29.             if(cball[i] == 0)continue;
  30.             int cnt = cball[i];
  31.            
  32.             if(nextball <= i){ //left
  33.                 int level = i - nextball;
  34.                 int start = nextball;
  35.                 for(int idx = start ; idx <= i; idx ++){
  36.                     if(level != 0)ans[level][idx] = '\\';
  37.                     if(level > maxlevel)maxlevel = level;
  38.                     if(cnt > 0){
  39.                         nextball++;
  40.                         cnt--;
  41.                     }
  42.                     level --;
  43.                    
  44.                 }
  45.             }
  46.             if(cnt > 0){ //right
  47.                 int level = 1;
  48.                 for(int idx = i + 1 ; idx < n && cnt > 0 ; idx ++){
  49.                     ans[level][idx] = '/';
  50.                     if(level > maxlevel)maxlevel = level;
  51.                     nextball = idx + 1;
  52.                     cnt--;
  53.                     level++;
  54.                 }
  55.             }
  56.            
  57.         }
  58.         printf("Case #%d: %d\n",t,maxlevel+1);
  59.         for(int lv = maxlevel ; lv >= 0 ; lv --){
  60.             printf("%s\n",ans[lv]);
  61.         }
  62.     }
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement