結果

問題 No.67 よくある棒を切る問題 (1)
ユーザー Twizz
提出日時 2017-05-19 23:20:17
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 226 ms
コード長 622 Byte
コンパイル時間 1563 ms
使用メモリ 3104 KB

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
bow001.txt AC 192 ms
3104 KB
bow002.txt AC 193 ms
3100 KB
bow003.txt AC 191 ms
3104 KB
bow004.txt AC 226 ms
3104 KB
bow005.txt AC 218 ms
3100 KB
bow006.txt AC 220 ms
3100 KB
bow007.txt AC 172 ms
2952 KB
bow008.txt AC 182 ms
3028 KB
bow009.txt AC 166 ms
2892 KB
bow010.txt AC 200 ms
2976 KB
bow011.txt AC 211 ms
3028 KB
bow012.txt AC 186 ms
2876 KB
bow013.txt AC 191 ms
3100 KB
bow014.txt AC 193 ms
3100 KB
bow015.txt AC 191 ms
3100 KB
bow016.txt AC 218 ms
3104 KB
bow017.txt AC 223 ms
3104 KB
bow018.txt AC 221 ms
3100 KB
bow019.txt AC 173 ms
2952 KB
bow020.txt AC 190 ms
3032 KB
challenge01.txt AC 4 ms
1536 KB
system_test1.txt AC 7 ms
1572 KB
system_test2.txt AC 5 ms
1552 KB
system_test3.txt AC 4 ms
1552 KB
system_test4.txt AC 38 ms
1792 KB
system_test5.txt AC 20 ms
1668 KB
system_test6.txt AC 8 ms
1576 KB
テストケース一括ダウンロード

ソースコード

diff #
#include"bits/stdc++.h"

//#include<bits/stdc++.h>
using namespace std;
#define print(x) cout<<x<<endl;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define REP(i,a) for(int i=0;i<a;i++)
typedef long long ll;
const ll mod = 10000000000;

ll n, k;
double l[200002];

bool check(double mid) {
	ll count = 0;
	REP(i, n) {
		count += (int)(l[i] / mid);
	}
	if (count >= k)return 1;
	else { return 0; }
}

int main() {
	cin >> n;
	REP(i, n) { cin >> l[i]; }
	cin >> k;
	double lb =0, ub = mod;
	REP(i,100) {
		double mid = (lb + ub) / 2.0;
		if (check(mid)) { lb = mid; }
		else { ub = mid; }
	}
	printf("%.14f\n", ub);
	return 0;
}
0