QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#875683 | #9684. 倾诉 | testngifaicnslvthis | 0 | 7ms | 3968kb | C++14 | 2.9kb | 2025-01-30 02:59:34 | 2025-01-30 02:59:35 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
using i64 = long long;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif
int main() {
cin.tie(0)->sync_with_stdio(0);
int T;
cin >> T;
while (T--) {
int n, k;
cin >> n >> k;
vector<double> a(n);
for (int i = 0; i < n; i++) {
int x;
cin >> x;
a[i] = x;
}
k = min(k, n - 1);
double left = 0, right = *max_element(a.begin(), a.end());
vector<int> x(n), x_min(n);
for (int iter = 0; iter < 100; iter++) {
double mid = (left + right) / 2;
bool ok = true;
for (int i = 0; i < n; i++) {
if (mid >= a[i]) {
x_min[i] = 0;
} else {
double ratio = a[i] / mid;
x_min[i] = ceil(log2(ratio));
}
}
x.back() = 0;
for (int i = n - 2; i >= 0; i--) {
x[i] = min(x[i + 1], x_min[i]);
if (x[i] < x_min[i]) {
ok = false;
break;
}
}
if (!ok) {
left = mid;
continue;
}
if (x[0] > k) {
left = mid;
} else {
right = mid;
}
}
double final_V = right;
vector<int> final_x(n);
for (int i = 0; i < n; i++) {
if (final_V >= a[i]) {
final_x[i] = 0;
} else {
double ratio = a[i] / final_V;
final_x[i] = ceil(log2(ratio));
}
}
final_x.back() = 0;
for (int i = n - 2; i >= 0; i--) {
final_x[i] = min(final_x[i + 1], final_x[i]);
}
int max_x = 0;
double max_val = 0;
for (int i = 0; i < n; i++) {
int xi = final_x[i];
double val = a[i] / (1LL << xi);
if (val > max_val) {
max_val = val;
}
}
i64 numerator = 0;
int exponent = 0;
while (true) {
i64 candidate = round(max_val * (1LL << exponent));
if (abs(candidate / (double)(1LL << exponent) - max_val) < 1e-9) {
numerator = candidate;
break;
}
exponent++;
if (exponent > 60) break;
}
while (exponent > 0 && (numerator % 2 == 0)) {
numerator /= 2;
exponent--;
}
string s;
if (numerator == 0) {
s = "0";
} else {
while (numerator > 0) {
s += (numerator % 2) + '0';
numerator /= 2;
}
reverse(s.begin(), s.end());
}
cout << s << '\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3840kb
input:
5 6 1 11764 28428 28179 18698 6443 20288 6 3 29 17548 61962 31242 8172 4107 6 15 7 2 239427 137145 171239 3 6 4 294 211 407 190 2 2 6 5 197190 265870 12121 144584 21313 14169
output:
110111100001100 1111001000001010 111010011101000011 110010111 1000000111010001110
result:
wrong answer 1st lines differ - expected: '110111100001100000000', found: '110111100001100'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Wrong Answer
Test #60:
score: 0
Wrong Answer
time: 3ms
memory: 3840kb
input:
1666 6 1 282 719 29 355 388 275 6 1 348 766 91 299 474 96 6 23 5 2 8554 8554 8554 2 6 1 84 195 23 37 120 117 6 3 8 3 51 62 28 5 6 3 3 64 64 4 4 2 6 9 5 552 552 552 552 5 6 3 3611 1144 417 3461 459 755 6 3 777 315 1007 5 2 1061 6 6 1300 2101 4 1877 360 2434 6 1 384 713 168 25 524 390 6 3 203 18 305 1...
output:
1011001111 1011111110 10000101101010 11000011 111110 1000000 1000101000 111000011011 10000100101 100110000010 1011001001 100110001 111001011010 100011000000 100110111111 10101011110 10111000 101101100 101110101100 1000000 1100000001101 110111111011 101101000 100000 10001000110111 10000100110 1000001...
result:
wrong answer 1st lines differ - expected: '110000100100000', found: '1011001111'
Subtask #6:
score: 0
Wrong Answer
Test #80:
score: 0
Wrong Answer
time: 7ms
memory: 3968kb
input:
3333 6 1000000000 131727 7 4 170194 6 59263 6 1000000000 417714 286613 7 310122 6 4 6 1000000000 63764 2430 2696 6699 8478 22261 6 1000000000 217 131 6 1487 2927 2 6 1000000000 26225 27991 3842 72525 4521 5231 6 1000000000 34409 26001 23563 19345 30764 24919 6 1000000000 97981 138532 59280 82393 128...
output:
101001100011010010 1100101111110110010 1111100100010100 101101101111 10001101101001101 1000011001101001 100001110100100100 101001011100111 11000001010010001111 1000000000 1000111010011100 1011101100101001110 10000000000000000 11010001101110 100110111010011101 10101010101101010 1000011001100001 11110...
result:
wrong answer 1st lines differ - expected: '10100110001101001000000', found: '101001100011010010'
Subtask #7:
score: 0
Skipped
Dependency #4:
0%