
Untitled
By: a guest on
Apr 29th, 2012 | syntax:
C++ | size: 1.19 KB | hits: 17 | expires: Never
/**
LANG : C++
AUTHOR : bunkung
TASK : hiring
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<string>
#include<utility>
using namespace std;
#define mod
#define inf
#define PAUSE system("pause")
#define S scanf
#define P printf
#define upper_bound high=mid-1
#define lower_bound low=mid+1
#define MAXN 2010
struct bun
{
int mo,q;
bool operator < ( const bun & T ) const
{
return mo/1.0/q > T.mo /1.0/ T.q;
}
}worker[500010];
long long qsum[500010];
int main()
{
int m,n,i,j,k,mx=0;
long long money,sum=0;
S("%d%lld",&n,&money);
for(i=1;i<=n;i++) S("%d%d",&worker[i].mo,&worker[i].q);
sort ( worker + 1 , worker + 1 + n );
for( i=1 ; i<=n ; i++ ) qsum[i] = qsum[i-1] + worker[i].q;
for( i=1 ; i<=n ; i++ )
{
for(j = i + mx ; j <=n ;j++ )
{
if( double(( qsum[j] - qsum[i-1]) / 1.0/ worker[i].q * worker[i].mo) > money )
break;
}
mx = j - i ;
}
P("%d",mx);
}