ZOJ Problem Set – 2321 Filling Out the Team

Time Limit: 2 Seconds      Memory Limit: 65536 KB

Over the years, the people of the great city of Pittsburgh have repeatedly demonstrated a collective expertise at football second to none. Recently a spy has discovered the true source of the city's football power-a wizard known only as "Myron," who is infallible at selecting the proper position at which each player will excel.

Now that you know the source of Pittsburgh's wisdom, you are determined to provide your school's football team with a computer program that matches the wisdom of "Myron." You have consulted with the best football minds you can find, and they have dispensed their wisdom on the slowest speed, minimum weight, and minimum strength required to play each position.

Position

Slow.Speed

Min.Weight

Min.Strength

Wide Receiver

4.5

150

200

Lineman

6.0

300

500

Quarterback

5.0

200

300

Using this knowledge, you will develop a program that reads in several players physical attributes and outputs what position(s) they are able to play.

 

Input

Each line of the input file will list the attributes for one player:

<speed> <weight> <strength>

Each number will be a real-valued number. The file will end with a line reading "0 0 0".

 

Output

For each player, you will output one line listing the positions that player can play. A player can play a position if each of their attributes is greater or equal to the minimum for weight and strength, and less than or equal to the slowest speed. If a player can play multiple positions, output them in the order listed above, separated by whitespace. You can not leave an extra space at the end of the line. If a player can play no positions, write "No positions" on the line.

 

Sample Input

4.4 180 200
5.5 350 700
4.4 205 350
5.2 210 500
0 0 0

 

Sample Output

Wide Receiver
Lineman
Wide Receiver Quarterback
No positions

Source: Mid-Atlantic USA 2004

 

#include<iostream>

#include<map>

#include<string>

 

using namespace std;

 

class Position

{

private:

    string name;

    double lowestSpeed;

    double minWeight;

    double minStrength;

public:

    Position(){}

 

    string GetName()

    {

        return this->name;

    }

    Position(string name, double lowestSpeed, double minWeight, double minStrength)

    {

        this->name=name;

        this->lowestSpeed = lowestSpeed;

        this->minWeight = minWeight;

        this->minStrength = minStrength;

    }

 

    bool MathPosition(double speed, double weight, double strength)

    {

        return (weight >= this->minWeight && strength >= this->minStrength && speed <= this->lowestSpeed);

    }

};

int main()

{

    Position **p = new Position*[3];

 

    *p = new Position("Wide Receiver", 4.5, 150, 200);

    *(p+1) = new Position("Lineman", 6.0, 300, 500);

    *(p+2) = new Position("Quarterback", 5.0, 200, 300);

 

    double s, w, str;

    while(cin>>s>>w>>str && (s != 0 || w != 0 || str != 0))

    {

        int matchCount = 0;

        if((*p)->MathPosition(s,w,str)){

            cout<<(*p)->GetName();

            matchCount++;

        }

        if((*(p+1))->MathPosition(s,w,str)){

            if(matchCount != 0)

                cout<<" ";

            cout<<(*(p+1))->GetName();

            matchCount++;

        }

        if((*(p+2))->MathPosition(s,w,str)){

            if(matchCount != 0)

                cout<<" ";

            cout<<(*(p+2))->GetName();

            matchCount++;

        }

        if(matchCount == 0)

            cout<<"No positions";

        cout<<endl;

    }

 

    

    delete[] p;

    p = NULL;

 

    return 0;

}

转载于:https://www.cnblogs.com/malloc/p/3426864.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值