E - Rounding Gym - 102465E

You decided to stay an extra day in Paris visiting favorite places of Parisians around T’el’ecom ParisTech. You want to collect information about these favorite places, but asking people to fill in surveys is less fun than coding. For this reason, you asked the Parisian Agency for Really Imprecise Surveys to do it for you. You sent them a list of the P places you were interested in.

After surveying exactly 10 000 persons and asking them their favorite place (among these P places), the agency has just sent you the results. All persons surveyed answered the question. Unfortunately, the agency rounded the percentage results to the nearest integer, using the following formula: result=⌊original_value+12⌋. In particular, decimal values of .50 are rounded up.

But since 10000 persons were surveyed, you should have been able to get percentage values precise to the second decimal. What a loss of precision! You want to know the range in which each original result could be.

Input
The input comprises several lines:

The first line consists of an integer P.
Each of the following P lines consists of the name of a place followed by an integer i, separated with a single space.
Limits

1≤P≤10000;
the name of a place is a string of between 1 and 20 characters among Latin alphabet letters (‘A’ to ‘Z’ and ‘a’ to ‘z’) and the underscore character (’_’);
no two names are the same;
0≤i≤100.
Output
If the results given by the agency are not consistent, print a single line with the word IMPOSSIBLE. Otherwise the output should consist of P lines, each of them should consist of the name of a place followed by a single space and two numbers, the smallest and the largest percentage values that place could have had in the original results, as floating-point numbers with two decimals separated with a single space (each number must have at least one digit before the decimal point, even if it is 0, and exactly 2 decimals, even if the trailing ones are 0). The places must be in the same order as in the input.

Examples
Input
4
Catacombes 32
Cite_Universitaire 22
Arenes_de_Lutece 26
Observatoire 19
Output
Catacombes 31.53 32.49
Cite_Universitaire 21.53 22.49
Arenes_de_Lutece 25.53 26.49
Observatoire 18.53 19.49
Input
7
Aqueduc_Medicis 11
Parc_Montsouris 40
Place_Denfert 10
Hopital_Sainte_Anne 4
Butte_aux_cailles 20
Cite_florale 12
Prison_de_la_Sante 0
Output
Aqueduc_Medicis 11.06 11.49
Parc_Montsouris 40.06 40.49
Place_Denfert 10.06 10.49
Hopital_Sainte_Anne 4.06 4.49
Butte_aux_cailles 20.06 20.49
Cite_florale 12.06 12.49
Prison_de_la_Sante 0.06 0.49
Input
2
Catacombes 50
Arenes_de_Lutece 49
Output
IMPOSSIBLE

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
string s[10010];
int a[10010];
int main()
{
    double maxmum=0;
    double minmum=0;
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>s[i]>>a[i];
        maxmum+=min(a[i]+0.49,100.0);
        minmum+=max(0.0,a[i]-0.5);
    }
    if(minmum>100||maxmum<100) cout<<"IMPOSSIBLE"<<endl;
    else{
        for(int i=0;i<n;i++)
        {
            cout<<s[i]<<fixed<<setprecision(2)<<" "<<max(max((double)0,a[i]-0.5),min(a[i]+0.49,100.0)-(maxmum-100))<<" "
            <<min(min(a[i]+0.49,(double)100),max((double)0,a[i]-0.5)+((double)100-minmum))<<endl;
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JdiLfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值