Pagini recente » Cod sursa (job #489395) | Cod sursa (job #2392359) | Cod sursa (job #2161112) | Cod sursa (job #922756) | Cod sursa (job #1372322)
#include <fstream>
#include <algorithm>
#define DIM 100005
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int N,p,u,mid,S,sol,nr,sum,a[DIM];
pair <int,int> V[DIM];
int ok(int x){
int sol=0;
for(int i=N;i>=1;i--){
int c=x/(2*V[i].second);
int s=c*V[i].first;
sol+=s;
if(sol>=S)
return 1;
}
return sol>=S;
}
int main(){
fin>>N>>S;
for(int i=1;i<=N;i++){
fin>>V[i].first>>V[i].second;
}
p=1;
u=DIM*1000;
while(p<=u){
mid=(p+u)>>1;
if(ok(mid)){
sol=mid;
u=mid-1;
}
else
p=mid+1;
}
for(int i=1;i<=N;i++){
a[i]=sol/(2*V[i].second);
a[i]*=V[i].first;
}
sort(a+1,a+N+1);
for(int i=N;i>=1;i--){
sum+=a[i];
nr++;
if(sum>=S)
break;
}
fout<<sol<<" "<<nr<<"\n";
fin.close();fout.close();
return 0;
}