sgu114. Telecasting station 难度:1

114. Telecasting station

time limit per test: 0.25 sec. 
memory limit per test: 4096 KB

 

Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came to a conclusion that in any city citizensdispleasure is equal to product of citizens amount in it by distance between city and TV-station. Find such point on Ox axis for station so that sum of displeasures of all cities is minimal.

 

Input

Input begins from line with integer positive number N (0<N<15000) – amount of cities in Berland. Following N pairs (XP) describes cities (0<X, P<50000), where X is a coordinate of city and P is an amount of citizens. All numbers separated by whitespace(s).

 

Output

Write the best position for TV-station with accuracy 10-5.

 

Sample Input

4

1 3

2 1

5 2

6 2

Sample Output

3.00000

思路:转化成pi个位置为xi的城市则很好求解,此时在中点
#include <cstdio>

#include <cmath>

#include <algorithm>

using namespace std;

const double inf=1e18;

const double eps=1e-9;

const int maxn=15005;

typedef pair<int ,int >P;

int n;

P x[maxn];

int main(){

    scanf("%d",&n);

    int sum=0;

    for(int i=0;i<n;i++){

        scanf("%d%d",&x[i].first,&x[i].second);

        sum+=x[i].second;

    }

    sort(x,x+n);

    int tot=0;

    int ans=x[n-1].first;

    for(int i=0;i<n;i++){

        tot+=x[i].second;

        if(tot>=(sum+1)/2){ans=x[i].first;break;}

    }

    printf("%d.00000\n",ans);

    return 0;

}

  

你可能感兴趣的:(cast)