QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#259882#7689. Flipping Cardsucup-team870WA 0ms3600kbC++141.2kb2023-11-21 15:42:152023-11-21 15:42:17

Judging History

This is the latest submission verdict.

  • [2023-11-21 15:42:17]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3600kb
  • [2023-11-21 15:42:15]
  • Submitted

answer

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;

bool check(long long mid, const std::vector<std::pair<int, int>>& cards) {
    int s1 = 0;
    std::vector<int> c(cards.size());
    for (int i = 0; i < cards.size(); i++) {
        const auto& card = cards[i];
        if (card.first >= mid) {
            s1++;
        }
        c[i] = (card.second >= mid) - (card.first >= mid);
    }

    int maxSubArraySum = c[0];
    int currentSubArraySum = c[0];
    for (int i = 1; i < c.size(); i++) {
        currentSubArraySum = max(c[i], currentSubArraySum + c[i]);
        maxSubArraySum = max(maxSubArraySum, currentSubArraySum);
    }

    int s2 = maxSubArraySum;
    return s1 + s2 > cards.size() / 2;
}

int main() {
    int n;
    cin >> n;
    vector<pair<int, int>> cards(n);
    for (int i = 0; i < n; i++) {
        cin >> cards[i].first >> cards[i].second;
    }

    long long l = 1, r = 1e9;
    while (l < r) {
        long long mid = (l + r + 1) / 2;
        if (check(mid, cards)) {
            l = mid;
        } else {
            r = mid - 1;
        }
    }
    cout << l << endl;
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

5
3 6
5 2
4 7
6 4
2 8

output:

6

result:

ok 1 number(s): "6"

Test #2:

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

input:

1
2 1

output:

1

result:

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