結果
| 問題 |
No.8072 Sum of sqrt(x)
|
| ユーザー |
259_Momone
|
| 提出日時 | 2020-09-12 23:01:59 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,478 bytes |
| コンパイル時間 | 3,143 ms |
| コンパイル使用メモリ | 196,992 KB |
| 最終ジャッジ日時 | 2025-01-14 13:58:33 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 6 WA * 21 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:8:10: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
8 | fread(buffer, 1, buf_size, stdin);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp: In lambda function:
main.cpp:16:18: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
16 | fread(tmp, 1, buf_size - len, stdin);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h>
int main(){
using namespace std;
// my fast in
constexpr unsigned long buf_size = 3UL << 18UL;
char buffer[buf_size];
fread(buffer, 1, buf_size, stdin);
unsigned long tmp_buf = 0;
const auto &read = [&tmp_buf, &buffer] {
const auto &M_reread_from_stdin = [&] {
ptrdiff_t len = buf_size - tmp_buf;
if (len > tmp_buf) return;
memcpy(buffer, buffer + tmp_buf, len);
char *tmp = buffer + len;
fread(tmp, 1, buf_size - len, stdin);
tmp_buf = 0;
};
unsigned long ret;
from_chars_result tmp{};
do {
if (__builtin_expect(buf_size <= tmp_buf + 32, 0))
M_reread_from_stdin();
tmp = from_chars(begin(buffer) + tmp_buf, end(buffer), ret);
tmp_buf = tmp.ptr - buffer + 1;
} while (tmp.ec != errc{});
return ret;
};
const auto &scan = [scan_impl = [&read](auto &x) -> decltype(auto) { return x = read(); }](
auto &...args) { tuple<decltype(args)...>{scan_impl(args)...}; };
// fast in kokomade
unsigned long N;
scan(N);
vector<long double> v(N + 1);
for(unsigned long i{1}; i <= N; ++i)v[i] = sqrtl(read());
for(unsigned long i{1}; i <= N; i <<= 1UL)for(unsigned long j{2 * i}; j <= N; j += 2 * i)v[j] += v[j - i];
for(unsigned long i{1}; i <= N; ++i)printf("%18.Lf\n", v[i] += v[i & (i - 1)]);
return 0;
}
259_Momone