QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873791#3167. ICPC CampLaStataleBlue#WA 0ms3712kbC++231.8kb2025-01-26 23:00:582025-01-26 23:01:06

Judging History

你现在查看的是最新测评结果

  • [2025-01-26 23:01:06]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3712kb
  • [2025-01-26 23:00:58]
  • 提交

answer

#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <random>
#include <unordered_map>
#include <unordered_set>
#include <assert.h>
#include <climits>
#include <iomanip>
using namespace std;

void solve([[maybe_unused]] int t)
{
  int n, p, q, s;
  cin >> n >> p >> q >> s;

  vector<int> a(p), b(q);
  for (auto &i : a)
    cin >> i;
  for (auto &i : b)
    cin >> i;

  sort(b.rbegin(), b.rend());

  auto check = [&](int d) -> bool
  {
    // cout << d << " check\n";

    sort(a.begin(), a.end(), [&](int x, int y)
         { return min(s - x, x + d) > min(s - y, y + d); });

    int cont = 0, ind = 0;
    for (int i = 0; i < p; i++)
    {
      while (ind < q && b[ind] > min(s - a[i], a[i] + d))
        ind++;

      if (ind == q)
        break;

      if (b[ind] < a[i] - d)
        continue;

      // cout << i << " " << ind << "\n";
      cont++;
      ind++;
    }
    // cout << cont << " cont\n";
    return cont >= n;
  };

  int low = -1, up = s + 1;
  while (up - low > 1)
  {
    int mid = (up + low) / 2;
    if (check(mid))
      up = mid;
    else
      low = mid;
  }
  cout << (up == s + 1 ? -1 : up) << "\n";
}

int main()
{
  ios::sync_with_stdio(false);
  cin.tie(0);

  int n = 1;
  // cin >> n;
  for (int i = 1; i <= n; i++)
    solve(i);
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3584kb

input:

3 4 5 10
3
4
4
9
0
1
5
6
6

output:

2

result:

ok single line: '2'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3712kb

input:

4 4 4 15
1
5
10
12
1
3
10
14

output:

13

result:

ok single line: '13'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3712kb

input:

4 4 4 10
1
12
5
10
1
10
3
14

output:

-1

result:

ok single line: '-1'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

4 4 4 30
1
5
10
12
1
3
10
14

output:

2

result:

ok single line: '2'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

4 5 5 10
1
3
3
4
9
0
2
5
7
8

output:

4

result:

ok single line: '4'

Test #6:

score: -100
Wrong Answer
time: 0ms
memory: 3712kb

input:

3 3 3 4
1
1
3
3
1
0

output:

3

result:

wrong answer 1st lines differ - expected: '2', found: '3'