OpenJudge noi 04 네트워크 관리자

3608 단어
선경을 묘사한 주민들은 프로그래밍 지역전을 열기로 했다.심판위원회는 완전히 자원으로 구성되어 있으며, 그들은 역사상 가장 공정한 경기를 조직하겠다고 약속했다.그들은 선수들의 컴퓨터를 성형 토폴로지 구조로 연결시켜 단일한 센터 서버에 연결시키기로 했다.심판위원회 의장은 이 완전히 공정한 경기를 조직하기 위해 모든 선수의 컴퓨터 등을 서버 주위에 거리를 두고 놓아야 한다고 제안했다.
심판위원회는 인터넷 라인을 구매하기 위해 현지의 한 인터넷 솔루션 제공 업체에 연락하여 일정한 수량의 등장망 라인을 제공할 수 있도록 요구했다.심판위원회는 네트워크가 길어질수록 좋아져 선수들 사이의 거리가 가능한 한 멀어지기를 바란다.
이 회사의 네트워크 담당자가 이 임무를 맡았다.그는 재고 중의 모든 망선의 길이(정확하게 센티미터까지)를 알고 있으며, 그에게 필요한 망선의 길이(정확하게 센티미터까지)를 알려주기만 하면 망선에 대한 절단 작업을 완성할 수 있다.하지만 이번에는 필요한 망선의 길이를 몰라 망선 담당자들이 당황하고 있다.
네트워크 담당자가 가장 긴 네트워크 길이를 정하고 이 길이에 따라 재고 중인 네트워크 라인을 절단하여 지정된 수량의 네트워크 라인을 얻을 수 있도록 프로그램을 작성해야 한다.
입력 첫 번째 줄에는 단일 공백으로 구분되는 두 개의 정수 N과 K가 포함되어 있습니다.N(1<=N<=10000)은 재고 중인 네트워크 수이고, K(1<=K<=10000)는 필요한 네트워크 수량이다.다음 N행은 재고 중인 각 네트워크 라인의 길이(단위: 미터)를 줄마다 세어 줍니다.모든 망선의 길이는 적어도 1m, 많게는 100km이다.입력의 모든 길이는 센티미터까지 정확합니다. 즉, 소수점 뒤에 두 자리까지 유지됩니다.출력 네트워크 담당자는 재고 네트워크 라인에서 지정된 수량의 네트워크 라인을 가장 긴 길이(단위: 미터)로 잘라낼 수 있습니다.반드시 센티미터까지 정확하게 해야 한다. 즉, 소수점 뒤에 두 자리까지 보존해야 한다.길이가 1cm 이상인 네트워킹을 지정할 수 없는 경우 따옴표 없이 0.00을 출력해야 합니다.샘플 입력 4 11 8.02 7.43 4.57 5.39 샘플 출력 2.00
2분 답안: 이 문제는 우선 더블로 할 수 없습니다. 카드 정밀도,, 본인이 직접 측정합니다...두 명의 소수를 보류하기 때문에, 우리는 그에게 *100을 int 2분 답안으로 바꾸라고 했다
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
const int maxn=100005;
int a[maxn];    
int n,k;
bool check(int mid)
{
    int ans=0;
    for(int i=1;i<=n;i++)
        ans+=a[i]/mid;
    if(ans<k)
        return false;
    return true;    
}
int main()
{
    int r=-1;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        double ch;
        cin>>ch;
        a[i]=ch*100;
    // printf("%d
",(int)a[i]);
r=max(r,a[i]); } int l=0; r++; while(r-l>1) { int mid=(l+r)>>1; if(check(mid)) l=mid; else r=mid; } printf("%.2lf",l/100.0); return 0; }

좋은 웹페이지 즐겨찾기