BZOJ 4159 [Neerc2009]Business Center

时间:2023-03-08 22:00:46

思路

简单的模拟,答案就是\(min\{(\lfloor\frac{d\times n}{u+d}\rfloor+1)\times(u+d)-d\times n\}\)

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
int n,m,ans=0x3f3f3f3f3f3f3f3fLL;
signed main(){
while(scanf("%lld %lld",&n,&m)==2){
ans=0x3f3f3f3f3f3f3f3fLL;
for(int i=1;i<=m;i++){
int u,d;
scanf("%lld %lld",&u,&d);
int t=(d*n)/(u+d);
t++;
ans=min(ans,(u+d)*t-d*n);
}
printf("%lld\n",ans);
}
return 0;
}