首页 > 其他 > 详细

Codeforces Round #242 (Div. 2) B. Megacity

时间:2014-04-26 07:27:48      阅读:428      评论:0      收藏:0      [点我收藏+]

按照半径排序,然后累加人数直到超过百万

bubuko.com,布布扣
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <map>
using namespace std;

int main(){
    int n,s;
    cin >> n >>s;
    map<double,int> a;
    for(int i = 0 ; i < n ; ++ i){
        double x,y;
        int people;
        cin>> x >>y>>people;
        double r = x*x+y*y;
        if(a.find(r)!=a.end()) a[r]+=people;
        else a.insert(make_pair(r,people));
    }
    map<double,int>::iterator iter = a.begin();
    for(; iter!=a.end(); iter++){
        s+=iter->second;
        if(s >= 1000000) break;
    }
    if(iter==a.end())cout<<-1<<endl;
    else printf("%0.6f\n",sqrt(iter->first));
}
bubuko.com,布布扣

本题采用c++的map比较方便,map自动按照半径排序,但在将半径作为键时,先不要开方,不然存入map中会损失精度

Codeforces Round #242 (Div. 2) B. Megacity,布布扣,bubuko.com

Codeforces Round #242 (Div. 2) B. Megacity

原文:http://www.cnblogs.com/xiongqiangcs/p/3689348.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!