ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#213912 | #2380. 中位数 | WZRYWZWY | 0 | 1333ms | 5816kb | C++11 | 2.2kb | 2024-11-14 18:39:55 | 2024-11-14 23:00:20 |
answer
#include <vector> // https://atcoder.jp/contests/abc107/submissions/12955333
#include <stack>
#include <queue>
#include <list>
#include <bitset>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <numeric>
#include <iostream>
#include <iomanip>
#include <string>
#include <chrono>
#include <random>
#include <cmath>
#include <cassert>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <functional>
#include <sstream>
using namespace std;
class FenwickTree {
public:
FenwickTree(int n) : N(n), data(N, 0) {
}
void reset() {
fill(data.begin(), data.end(), 0);
}
void put(int x, int v) {
for (; x < N; x |= x + 1) {
data[x] += v;
}
}
int get(int x) {
int res = 0;
for (; x >= 0; x = (x & (x + 1)) - 1) {
res += data[x];
}
return res;
}
private:
int N;
vector<int> data;
};
int main(int argc, char** argv) {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> A(n);
for (int i = 0; i < n; ++i) {
cin >> A[i];
}
vector<int> B(n, 0);
int base = -n;
FenwickTree ft(n * 2 + 123);
long long tar = n * 1LL * (n + 1) / 2 / 2 + 1;
// cout << tar << endl;
auto ok = [&](int x) {
for (int i = 0; i < n; ++i) {
if (A[i] <= x) {
B[i] = 1;
} else {
B[i] = -1;
}
}
ft.reset();
int sum = 0;
ft.put(sum - base, 1);
long long res = 0;
for (auto x : B) {
sum += x;
res += ft.get(sum - base - 1);
ft.put(sum - base, 1);
}
return res >= tar;
};
int mx = *max_element(A.begin(), A.end());
long long lo = 0, hi = mx;
while (lo < hi) {
auto mi = (lo + hi) >> 1;
if (ok(mi)) {
hi = mi;
} else {
lo = mi + 1;
}
}
cout << lo << '\n';
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 1248kb
input:
200 247837946 222748444 549404903 934970141 181690491 116150147 755881953 912914845 578004877 589768...
output:
415196584
result:
wrong answer 1st numbers differ - expected: '411892743', found: '415196584'
Test #2:
score: 0
Wrong Answer
time: 0ms
memory: 1244kb
input:
200 504553675 321343511 781936447 172776833 779139954 643752948 106 164 303976944 828799931 11502170...
output:
467261488
result:
wrong answer 1st numbers differ - expected: '451369372', found: '467261488'
Test #3:
score: 0
Wrong Answer
time: 0ms
memory: 1244kb
input:
200 738368650 91602659 340556191 835209882 409442204 656938221 258295858 90658347 126689369 56196859...
output:
423293713
result:
wrong answer 1st numbers differ - expected: '420852999', found: '423293713'
Test #4:
score: 0
Wrong Answer
time: 4ms
memory: 1332kb
input:
5000 300051244 685920750 122806687 315801142 33592358 339985437 262520930 380010194 687330910 550362...
output:
465584409
result:
wrong answer 1st numbers differ - expected: '465193387', found: '465584409'
Test #5:
score: 0
Wrong Answer
time: 4ms
memory: 1332kb
input:
5000 108135249 950186870 146626753 682580494 744412491 4159 995071655 157947560 668940645 878891308 ...
output:
467006251
result:
wrong answer 1st numbers differ - expected: '466892796', found: '467006251'
Test #6:
score: 0
Wrong Answer
time: 4ms
memory: 1332kb
input:
5000 246610103 780664789 678774940 716124165 518453378 300121008 135383319 939869983 430946660 13412...
output:
470684231
result:
wrong answer 1st numbers differ - expected: '470507384', found: '470684231'
Test #7:
score: 0
Wrong Answer
time: 297ms
memory: 5816kb
input:
300000 786856547 380253059 684225515 795392038 881780483 18437791 793783577 832330260 801624996 3466...
output:
463539297
result:
wrong answer 1st numbers differ - expected: '463539280', found: '463539297'
Test #8:
score: 0
Wrong Answer
time: 292ms
memory: 5812kb
input:
300000 951000485 930070933 3566360 157114366 150196488 611226665 123590886 950624066 472150346 57976...
output:
462350212
result:
wrong answer 1st numbers differ - expected: '462334620', found: '462350212'
Test #9:
score: 0
Wrong Answer
time: 316ms
memory: 5816kb
input:
300000 728509094 406128756 696166390 756254976 31403187 672131182 35544213 870708756 3659210 5227553...
output:
464176898
result:
wrong answer 1st numbers differ - expected: '464162969', found: '464176898'
Test #10:
score: 0
Wrong Answer
time: 416ms
memory: 5816kb
input:
300000 804874490 52247250 546638789 400214210 383796618 47995083 814777769 507157584 466189162 28296...
output:
463577892
result:
wrong answer 1st numbers differ - expected: '463577194', found: '463577892'