結果
| 問題 |
No.702 中央値を求めよ LIMITED
|
| コンテスト | |
| ユーザー |
はむこ
|
| 提出日時 | 2017-10-01 06:27:53 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
CE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 2,308 bytes |
| コンパイル時間 | 310 ms |
| コンパイル使用メモリ | 52,044 KB |
| 最終ジャッジ日時 | 2025-01-01 22:18:20 |
| 合計ジャッジ時間 | 749 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp:17:1: error: ‘uint32_t’ does not name a type
17 | uint32_t x = 0, y = 1, z = 2, w = 3;
| ^~~~~~~~
main.cpp:2:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
1 | #include <iostream>
+++ |+#include <cstdint>
2 | /*
main.cpp:18:1: error: ‘uint32_t’ does not name a type
18 | uint32_t x_org, y_org, z_org, w_org;
| ^~~~~~~~
main.cpp:18:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
main.cpp:19:1: error: ‘uint32_t’ does not name a type
19 | uint32_t t = 0;
| ^~~~~~~~
main.cpp:19:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
main.cpp:20:1: error: ‘uint32_t’ does not name a type
20 | uint32_t generate() {
| ^~~~~~~~
main.cpp:20:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
main.cpp: In function ‘void reset()’:
main.cpp:29:5: error: ‘x’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^
main.cpp:29:9: error: ‘x_org’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^~~~~
main.cpp:29:16: error: ‘y’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^
main.cpp:29:20: error: ‘y_org’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^~~~~
main.cpp:29:27: error: ‘z’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^
main.cpp:29:31: error: ‘z_org’ was not declared in this scope
29 | x = x_org, y = y_org, z = z_org, w = w_org;
| ^~~~~
main.cpp:29:38: error: ‘w’ was not declared in this scope
29 | x = x_org,
ソースコード
#include <iostream>
/*
#include<vector>
#include<algorithm>
*/
using namespace std;
#define rep(i,n) for(long long i = 0; i < (long long)(n); i++)
#define all(x) (x).begin(), (x).end()
template<class T1, class T2> bool chmin(T1 &a, T2 b) { return b < a && (a = b, true); }
template<class T1, class T2> bool chmax(T1 &a, T2 b) { return a < b && (a = b, true); }
using ll = int64_t;
#define ldout fixed << setprecision(40)
const int N = 10000001;
uint32_t x = 0, y = 1, z = 2, w = 3;
uint32_t x_org, y_org, z_org, w_org;
uint32_t t = 0;
uint32_t generate() {
t = (x^(x<<11));
x = y;
y = z;
z = w;
w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
return w;
}
void reset(void) {
x = x_org, y = y_org, z = z_org, w = w_org;
}
ll seed;
ll min_ = 2130000000, max_ = 2170000000;
ll less_, greater_, equal_, c = 0;
ll guess, maxltguess, mingtguess, median;
ll n;
int main(void) {
cin >> seed;
x = seed;
x_org = x, y_org = y, z_org = z, w_org = w;
/*
rep(i, N) {
ll x = generate();
chmax(max_, x);
chmin(min_, x);
}
*/
while (1) {
reset();
// cout << "iter"<<endl;
guess = (min_+max_)/2;
less_ = 0; greater_ = 0; equal_ = 0;
maxltguess = min_;
mingtguess = max_;
c = 0;
rep(i, N) {
n = generate();
if (n < guess) {
less_++;
if (n > maxltguess)
maxltguess = n;
} else if (n > guess) {
greater_++;
if (n < mingtguess)
mingtguess = n;
} else {
equal_++;
}
c = i + 1;
}
if (less_ <= (N+1)/2 && greater_ <= (N+1)/2)
break;
if (less_>greater_)
max_ = maxltguess;
else
min_ = mingtguess;
}
if (less_ >= (N+1)/2)
median = maxltguess;
else if (less_+equal_ >= (N+1)/2)
median = guess;
else
median = mingtguess;
cout << median << endl;
#if 0
reset();
vector<ll> a(N);
rep(i, N) a[i] = generate();
sort(all(a));
cout << a[N/2] << endl;
if (a[N/2] != median) {
cerr << "NOT MATCH" << endl;
abort();
}
#endif
return 0;
}
はむこ