fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long int li;
  5. typedef long long ll;
  6. #define mp make_pair
  7. #define pb push_back
  8. #define getc getchar
  9. #define mid (l+ r>> 1)
  10. const li mod= 1e9+ 7;
  11.  
  12. li nm[ 7], sz[ 7], n;
  13.  
  14. vector< pair< li, li> > want;
  15.  
  16. li req[ 7];
  17.  
  18. void prnt( li ths)
  19. {
  20. if( ths== 1) printf( "S");
  21. if( ths== 2) printf( "M");
  22. if( ths== 3) printf( "L");
  23. if( ths== 4) printf( "XL");
  24. if( ths== 5) printf( "XXL");
  25. if( ths== 6) printf( "XXXL");
  26.  
  27. return;
  28. }
  29.  
  30. void solve()
  31. {
  32. for( li i= 1; i<= 6; i++) scanf( "%ld", &sz[ i]);
  33.  
  34. scanf( "%ld", &n);
  35.  
  36. char S[ 100];
  37.  
  38. for( li i= 1; i<= n; i++)
  39. {
  40. getc();
  41.  
  42. scanf( "%s", S);
  43.  
  44. li a= 0, b= 0;
  45.  
  46. if( S[ 0]== 'S') a= 1;
  47. if( S[ 0]== 'M') a= 2;
  48. if( S[ 0]== 'L') a= 3;
  49. if( S[ 0]== 'X')
  50. {
  51. if( S[ 1]== 'L') a= 4;
  52. if( S[ 1]== 'X')
  53. {
  54. if( S[ 2]== 'L') a= 5;
  55. if( S[ 2]== 'X') a= 6;
  56. }
  57. }
  58.  
  59. li st= 0, len= strlen( S);
  60.  
  61. while( st< len) if( S[ st++]== ',') b= a+ 1;
  62.  
  63. want. pb( mp( a, b) );
  64. }
  65.  
  66. for( li i= 0; i< want. size(); i++) if( want[ i]. second== 0) req[ want[ i]. first]++;
  67.  
  68. for( li i= 1; i<= 6; i++)
  69. {
  70. sz[ i]-= req[ i];
  71. nm[ i]= sz[ i];
  72. req[ i]= 0;
  73.  
  74. if( sz[ i]< 0)
  75. {
  76. printf( "NO");
  77. return;
  78. }
  79. }
  80.  
  81. for( li i= 0; i< want. size(); i++) if( want[ i]. second!= 0) req[ want[ i]. first]++;
  82.  
  83. for( li i= 1; i<= 6; i++)
  84. {
  85. sz[ i]-= req[ i];
  86. req[ i]= 0;
  87.  
  88. if( sz[ i]< 0)
  89. {
  90. sz[ i+ 1]+= sz[ i];
  91. sz[ i]= 0;
  92. }
  93.  
  94. if( sz[ i+ 1]< 0)
  95. {
  96. printf( "NO");
  97. return;
  98. }
  99. }
  100.  
  101. printf( "YES\n");
  102.  
  103. for( li i= 0; i< want. size(); i++)
  104. {
  105. if( want[ i]. second== 0)
  106. {
  107. prnt( want[ i]. first);
  108. if( i< want. size()- 1) printf( "\n");
  109. continue;
  110. }
  111.  
  112. if( nm[ want[ i]. first]> 0)
  113. {
  114. prnt( want[ i]. first);
  115. nm[ want[ i]. first]--;
  116.  
  117. if( i< want. size()- 1) printf( "\n");
  118.  
  119. continue;
  120. }
  121.  
  122. prnt( want[ i]. second);
  123. nm[ want[ i]. second]--;
  124.  
  125. if( i< want. size()- 1) printf( "\n");
  126. }
  127.  
  128. return;
  129. }
  130.  
  131. int main()
  132. {
  133. // freopen( "in", "r", stdin);
  134. // freopen( "out", "w", stdout);
  135.  
  136. li T= 1;
  137.  
  138. // scanf( "%ld", &T);
  139.  
  140. while( T--)
  141. {
  142. // printf( "Case %ld: ", T+ 1);
  143.  
  144. solve();
  145. }
  146.  
  147. return 0;
  148. }
Success #stdin #stdout 0s 3476KB
stdin
0 1 0 1 1 0
3
XL
S,M
XL,XXL
stdout
NO