Pagini recente » Cod sursa (job #1689889) | Cod sursa (job #696939) | Cod sursa (job #612472) | Cod sursa (job #350438) | Cod sursa (job #1372173)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int n,m,i,j,mid,st,dr,sol1,sol2,sum,sol,x[1005];
pair <int, int> v[1005];
int verif(int xx){
int suma=0;
for(i=1;i<=n;i++){
int timp=0;
int s=0;
while(timp<=xx){
timp+=v[i].y*2;
s+=v[i].x;
}
s-=v[i].x;
suma+=s;
if(suma>=m){
return 1;
}
}
if(suma>=m){
return 1;
}
return 0;
}
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[i].x>>v[i].y;
}
st=1;dr=2000000;
while(st<=dr){
mid=(st+dr)/2;
if(verif(mid)){
dr=mid-1;
sol=mid;
}
else{
st=mid+1;
}
}
sol1=sol;
for(i=1;i<=n;i++){
int timp=0;
int suma=0;
while(timp<=sol1){
timp+=v[i].y*2;
x[i]+=v[i].x;
}
x[i]-=v[i].x;
}
sort(x+1,x+n+1);
for(i=n;i>=1;i--){
sum+=x[i];
sol2++;
if(sum>=m){
break;
}
}
fout<<sol1<<" "<<sol2<<"\n";
return 0;
}