BNU10878:下载测速

最近,nono终于结束了每年一次的为期12个月的冬眠,醒来的第一件事就是——看电影!!nono发现最近一年出现了各种很好很强大的电影,例如这个、这个、还有这个。
于是nono直接把这些电影全部扔进了下载列表之中。已知nono下载了N部电影,其中第i部电影的大小为Si,该电影最大下载速度不会超过Vi,在任一时刻全部电影的下载速度之和不会超过Vt。现在nono希望知道在这些条件下至少需要多长时间才能将这些电影全部下完。

Input

多组输入。每组输入的第一行为两个整数N,Vt(0<N≤10 6, 0<Vt≤10 9)。接下来的N行每行两个整数表示Si, Vi(0<Si,Vi≤1000)。输入以EOF结束。

Output

对于每组数据,输出一个既约分数表示下载完全部电影所需的最少时间。 

Sample Input

3 6
7 4
5 2
3 4
1 10
6 2

Sample Output

5/2
3/1
 
找出每首哥单独下载的时间,与所有歌全部在约定速度内下载时间的最大值即可 
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int gcd(int n,int m)
{
    int t,r;
    if(n<m)
    {
        t = n;
        n = m;
        m = t;
    }
    while(m)
    {
        r = n%m;
        n = m;
        m = r;
    }
    return n;
}

int main()
{
    int n,v,a,b,sum,s,k,i,r;
    double maxn,t;
    while(~scanf("%d%d",&n,&v))
    {
        sum = 0;
        maxn = 0;
        for(i = 0;i<n;i++)
        {
            scanf("%d%d",&a,&b);
            sum+=a;
            t = a*1.0/b;
            if(t>maxn)
            {
                maxn = t;
                s = a;
                k = b;
            }
        }
        if(sum*1.0/v>maxn)
        {
            s = sum;
            k = v;
        }
        r = gcd(s,k);
        printf("%d/%d\n",s/r,k/r);
    }

    return 0;
}

你可能感兴趣的:(水,BNU)