Pagini recente » Cod sursa (job #3133192) | Cod sursa (job #61553) | Cod sursa (job #680080) | Cod sursa (job #1794593) | Cod sursa (job #1099861)
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
int N,M,c[100010],t[100010],sol[100010],poz,contor;
void citire() {
ifstream in ("garaj.in");
int i;
in>>N>>M;
for(i=1;i<=N;i++){
in>>c[i]>>t[i];
t[i]*=2;
}
in.close();
}
int valid(int timp) {
int i;
long long s=0;
for(i=1;i<=N;i++){
s+=1LL*((timp/t[i])*c[i]);
if(s>=M)
return 1;
}
return 0;
}
int cautarebin() {
int st,dr,m,ok;
st=0;
dr=1000000000;
while(st<=dr) {
m=(st+dr)/2;
ok=valid(m);
if(ok==1)
dr=m-1;
else
st=m+1;
}
return m+1;
}
void solve() {
int s=0,r,i;
poz=cautarebin();
for(i=1;i<=N;i++) {
sol[i]=(poz/t[i])*c[i];
}
sort(sol+1,sol+N+1);
for(i=N;i>=1;i--) {
if(s<M){
s+=((poz/t[i])*c[i]);
contor++;
}
}
}
void afisare(){
ofstream out("garaj.out");
out<<poz<<' '<<contor<<'\n';
out.close();
}
int main () {
citire();
solve();
afisare();
return 0;
}