Submission #56048160
Source Code Expand
#include <random>
#include <algorithm>
#include <bitset>
#include <chrono>
#include <cmath>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <chrono>
#define m_p make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((x).size())
typedef long long ll;
using ull = unsigned long long;
using namespace std;
mt19937 rnd(348502);
ll mod1 = 998244353;
ll mod = 1e9 + 7;
const int N = 200007;
void solve()
{
int n, i, j, q, x, y, b, k;
cin >> n >> q;
vector<int> v;
for ( i = 0; i < n; i++)
{
cin >> x;
v.push_back(x);
}
sort(all(v));
for ( i = 0; i < q; i++)
{
cin >> b >> k;
int qaq = 0;
if (v[0] >= b)
{
cout << v[k - 1] - b << '\n';
continue;
}
if (v.back() <= b)
{
cout << b - v[v.size() - k] << '\n';
continue;
}
int l = 0, r = upper_bound(all(v), b) - v.begin();
int ll = upper_bound(all(v), b) - v.begin(), rr = n - 1;
int m, m1, ans = -1;
while (l <= r)
{
m = (l + r) / 2;
int her = abs(b - v[m]);
int ans1 = -1;
int l1 = m, r1 = rr;
while (l1 <= r1)
{
m1 = (l1 + r1) / 2;
if (abs(v[m1] - b) <= abs(b - v[m]))
{
ans1 = m1;
l1 = m1 + 1;
}
else
{
r1 = m1 - 1;
}
}
if (abs(m - ans1) + 1 >= k)
{
ans = m;
qaq = ans1;
l = m + 1;
}
else
{
r = m - 1;
}
}
if (ans != -1)
{
if (ans + k - 1 < v.size() && v[ans + k - 1] == v[qaq])
{
cout << abs(v[ans] - b) << '\n';
continue;
}
}
ll = 0, rr = lower_bound(all(v), b) - v.begin() - 1;
l = lower_bound(all(v), b) - v.begin() - 1, r = n - 1;
m, m1, ans = -1;
qaq = 0;
while (l <= r)
{
m = (l + r) / 2;
int her = abs(b - v[m]);
int ans1 = -1;
int l1 = ll, r1 = m;
while (l1 <= r1)
{
m1 = (l1 + r1) / 2;
if (abs(v[m1] - b) <= abs(b - v[m]))
{
ans1 = m1;
r1 = m1 - 1;
}
else
{
l1 = m1 + 1;
}
}
if (abs(m - ans1) + 1 >= k)
{
ans = m;
qaq = ans1;
r = m - 1;
}
else
{
l = m + 1;
}
}
cout << abs(v[ans] - b) << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int tt = 1;
//cin >> tt;
while (tt--) {
solve();
}
return 0;
}
Submission Info
Submission Time
2024-07-27 22:15:21+0900
Task
D - K-th Nearest
User
CyberCow
Language
C++ 20 (gcc 12.2)
Score
0
Code Size
3424 Byte
Status
WA
Exec Time
222 ms
Memory
3892 KiB
Compile Error
Main.cpp: In function ‘void solve()’:
Main.cpp:63:17: warning: unused variable ‘her’ [-Wunused-variable]
63 | int her = abs(b - v[m]);
| ^~~
Main.cpp:92:29: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
92 | if (ans + k - 1 < v.size() && v[ans + k - 1] == v[qaq])
| ~~~~~~~~~~~~^~~~~~~~~~
Main.cpp:100:9: warning: left operand of comma operator has no effect [-Wunused-value]
100 | m, m1, ans = -1;
| ^
Main.cpp:100:23: warning: right operand of comma operator has no effect [-Wunused-value]
100 | m, m1, ans = -1;
| ^
Main.cpp:105:17: warning: unused variable ‘her’ [-Wunused-variable]
105 | int her = abs(b - v[m]);
| ^~~
Main.cpp:34:15: warning: unused variable ‘j’ [-Wunused-variable]
34 | int n, i, j, q, x, y, b, k;
| ^
Main.cpp:34:24: warning: unused variable ‘y’ [-Wunused-variable]
34 | int n, i, j, q, x, y, b, k;
| ^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
0 / 425
Status
Set Name
Test Cases
Sample
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All
00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 02_minmax_00.txt, 02_minmax_01.txt
Case Name
Status
Exec Time
Memory
00_sample_00.txt
AC
2 ms
3440 KiB
00_sample_01.txt
AC
1 ms
3440 KiB
00_sample_02.txt
AC
1 ms
3492 KiB
01_random_00.txt
WA
54 ms
3724 KiB
01_random_01.txt
WA
222 ms
3824 KiB
01_random_02.txt
WA
108 ms
3520 KiB
01_random_03.txt
WA
222 ms
3752 KiB
01_random_04.txt
WA
159 ms
3544 KiB
01_random_05.txt
WA
222 ms
3892 KiB
01_random_06.txt
AC
27 ms
3732 KiB
01_random_07.txt
WA
222 ms
3692 KiB
01_random_08.txt
WA
161 ms
3784 KiB
01_random_09.txt
WA
222 ms
3776 KiB
01_random_10.txt
AC
33 ms
3780 KiB
01_random_11.txt
WA
222 ms
3752 KiB
01_random_12.txt
WA
173 ms
3544 KiB
01_random_13.txt
WA
207 ms
3716 KiB
01_random_14.txt
AC
104 ms
3720 KiB
01_random_15.txt
AC
167 ms
3732 KiB
02_minmax_00.txt
AC
1 ms
3440 KiB
02_minmax_01.txt
AC
23 ms
3812 KiB