Pagini recente » Cod sursa (job #3282155) | Cod sursa (job #633743) | Cod sursa (job #245825) | Cod sursa (job #1693418) | Cod sursa (job #137314)
Cod sursa(job #137314)
#include<stdio.h>
#include<algorithm>
using namespace std;
pair <int,int> nr[100100];
long long cant;
int timp(int n,int m,int tmp){
cant=0;
int i;
for(i=0;i<n && cant<m;++i)
cant+=(tmp/(2*nr[i].first))*((long long)nr[i].second);
if(cant>=m)
return 1;
return 0;
}
int main(){
freopen("garaj.in","r",stdin);
freopen("garaj.out","w",stdout);
int n,m,i,sum;
long long p,u,mij;
scanf("%d%d",&n,&m);
for(i=0;i<n;++i)
scanf("%d%d",&nr[i].second,&nr[i].first);
sort(nr,nr+n);
p=0;
u=1<<42;
while(p!=u){
mij=(p+u)>>1;
if(timp(n,m,mij))
u=mij;
else
p=mij+1;
}
cant=0;
sum=0;
for(i=0;cant<m && i<n;++i){
++sum;
cant+=(p/(2*nr[i].first))*((long long)nr[i].second);
}
printf("%lld %d\n",p,sum);
fclose(stdin);
fclose(stdout);
return 0;
}