PKU 3911 Internet Service Providers

問題

整数N, Cが与えられる。
T(C - TN)を最大にするような整数Tを求めよ。
複数ある場合は最も小さいものを求めよ。

方針

Tについての二次関数なので、最大値を取るような実数Tはわかる。
Tは整数なので、それを近い整数に丸める。

ソースコード

int main()
{
	int n,c;
	while(~scanf("%d%d",&n,&c)){
		if(n==0){
			puts("0"); continue;
		}
		int t=c/(2*n);
		if(t*(c-(ll)t*n)<(t+1)*(c-(t+1ll)*n))t++;
		
		printf("%d\n",t);
	}
	return 0;
}