147832025-02-02 14:47:44sarminLeghosszabb béke (75 pont)cpp17Wrong answer 66/7546ms3652 KiB
// Created by Armin on 2/1/2025.

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pp = pair<int, int>;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);
    
    int n, m; cin >> n >> m;
    vector<pair<int, int>> v(m);
    vector<int> prefix(n + 2);
    vector<int> start, end;
    for (int i = 0; i < m; i++) {
      cin >> v[i].first >> v[i].second;
      v[i].second++;
      prefix[v[i].first]++;
      prefix[v[i].second]--;
      start.push_back(v[i].first);
      end.push_back(v[i].second);
    }
    start.push_back(n + 1);
    end.push_back(0);
    start.erase(unique(start.begin(), start.end()), start.end());
    end.erase(unique(end.begin(), end.end()), end.end());
    sort(start.begin(), start.end());
    sort(end.begin(), end.end());
    /*for (int i = n - 10; i < n; i++) {
      cout << start[i] << " ";
    }
    cout << endl;
    for (int i = n - 10; i < n; i++) {
      cout << end[i] << " ";
    }
    cout << endl;*/
    n = n + 2;
    for (int i = 1; i < n; i++) {
      prefix[i] += prefix[i - 1];
    }
    /*for (int x : prefix) cout << x << " ";
    cout <<"\n";*/

    int i = 0, j = 0;
    int mx = 0, mxs = 0;
    while (i < start.size() && j < end.size()) {
      while (start[i] <= end[j] && i + 1 < start.size()) {
        i++;
      }

      //cerr << start[i] << " " << end[j] << "\n";
      int d = prefix[start[i] - 1] - prefix[end[j]];
      //cout << i << " " << j << " " << d << "\n";
      if (d == 0 && start[i] - end[j] > mx) {
        mx = start[i] - end[j];
        //cout << i << " " << j << " " << start[i] << ' ' << end[j] << endl;
        mxs = end[j];
      }
      j++;
    }
    cout << mx << " " << mxs << endl;
    /*vector<pair<int, int>> v(m);
    vector<int> lr(4 * m);
    for (int i = 0; i < m; i++) {
      cin >> v[i].first >> v[i].second;
      v[i].second++;
      lr[4 * i] = v[i].first;
      lr[4 * i + 1] = max(0, v[i].first - 1);
      lr[4 * i + 2] = v[i].second;
      lr[4 * i + 3] = v[i].second + 1;
    }
    sort(lr.begin(), lr.end());
    lr.erase(unique(lr.begin(), lr.end()), lr.end());
    for (int x : lr) cout << x << " ";
    cout << endl;

    int k = lr.size();
    vector<int> a(k);
    for (auto& [l, r] : v) {
      l = lower_bound(lr.begin(), lr.end(), l) - lr.begin();
      r = lower_bound(lr.begin(), lr.end(), r) - lr.begin();
      a[l]++;
      a[r]--;
    }

    for (int i = 1; i < k; i++) {
      a[i] = a[i] + a[i - 1];
    }
    for (int x : a) cout << x << " ";*/

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base66/75
1Accepted0/01ms512 KiB
2Accepted0/046ms3652 KiB
3Wrong answer0/31ms500 KiB
4Wrong answer0/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Accepted3/31ms564 KiB
7Accepted3/31ms508 KiB
8Accepted4/41ms424 KiB
9Accepted4/41ms316 KiB
10Accepted4/41ms552 KiB
11Accepted4/43ms564 KiB
12Accepted4/44ms564 KiB
13Accepted4/43ms564 KiB
14Accepted4/43ms652 KiB
15Accepted4/44ms564 KiB
16Accepted4/44ms740 KiB
17Accepted4/44ms824 KiB
18Accepted4/44ms820 KiB
19Accepted4/441ms3252 KiB
20Accepted4/439ms3496 KiB
21Accepted4/432ms3528 KiB
22Accepted4/439ms3440 KiB