CodeForces 46B T-shirts from Sponsor

B. T-shirts from Sponsor
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

One day a well-known sponsor of a well-known contest decided to give every participant of the contest a T-shirt as a present. A natural problem occurred: on the one hand, it is not clear how many T-shirts of what sizes should be ordered, and on the other hand, one doesn't want to order too many T-shirts (and we do not exactly paper the walls with the oversupply). After considerable brain racking and some pre-estimating, the sponsor representatives ordered a certain number of T-shirts of sizes S, M, L, XL and XXL. The T-shirts turned out to bring good luck, that's why on the contest day there built up a line of K participants willing to get one. Every contestant is characterized by his/her desired T-shirt size (so it happens that for all the participants it is also one of the sizes S, M, L, XL and XXL). The participants come up to get a T-shirt one by one and try to choose the most suitable one, choosing it like this. If there is still a T-shirt of the optimal size left, that he/she takes it without further ado. Otherwise the contestant would prefer to choose a T-shirt with the size as close to the optimal one as possible (the distance between neighboring sizes is considered equal to one). If the variant of choice is not unique, the contestant will take a T-shirt of a bigger size (in case he/she grows more). For example, for a person whose optimal size is L the preference list looks like this: L, XL, M, XXL, S. Using the data on how many T-shirts of every size had been ordered by the organizers, on the size of contestants in the line determine who got a T-shirt of what size.

Input

The first line contains five non-negative integers NS, NM, NL, NXL, NXXL not exceeding 1000 which represent the number of T-shirts of the corresponding sizes. The second line contains an integer K (1 ≤ K ≤ 1000) which represents the number of participants. The next K lines contain the optimal T-shirt sizes for the contestants. The sizes are given in the order in which the participants stand in the line. It is guaranteed that NS + NM + NL + NXL + NXXL ≥ K.

Output

For each contestant, print a line containing the size of the T-shirt he/she got.

Sample test(s)
Input
1 0 2 0 1
3
XL
XXL
M
Output
XXL
L
L

#include<iostream>
using namespace std;

int num[5];
char T_shirt[5][5]={"S","M","L","XL","XXL"};

int select(int a){
    int b=a;
    if(num[a]){
        return a;
    }
    else{
        while(a<5){
            a++;
            if(num[a]){
                return a;
            }
            else if(b>0){
                b--;
                if(num[b]){
                    return b;
                }
            }
        }
        while(b>0){
            b--;
            if(num[b]){
                return b;
            }
        }
    }
}

int main(){
    int k,t,x;
    char people[1010][5];
    while(cin>>num[0]>>num[1]>>num[2]>>num[3]>>num[4]){
        cin>>k;
        for(int i=0;i<k;i++){
            cin>>people[i];
        }
        for(int i=0;i<k;i++){
            if(people[i][0]=='S'){
                t=0;
            }
            else if(people[i][0]=='M'){
                t=1;
            }
            else if(people[i][0]=='L'){
                t=2;
            }
            else if(people[i][0]=='X'&&people[i][1]=='L'){
                t=3;
            }
            else if(people[i][0]=='X'&&people[i][1]=='X'){
                t=4;
            }
            x=select(t);
            num[x]--;
            cout<<T_shirt[x]<<endl;
        }
    }
    return 0;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值