QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#662544#7689. Flipping CardsjiangtaoWA 0ms3876kbC++201.8kb2024-10-21 02:50:112024-10-21 02:50:11

Judging History

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

  • [2024-10-21 02:50:11]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3876kb
  • [2024-10-21 02:50:11]
  • 提交

answer

// Problem: M. Flipping Cards
// Contest: Codeforces - 2023 China Collegiate Programming Contest (CCPC) Guilin Onsite (The 2nd Universal Cup. Stage 8: Guilin)
// URL: https://codeforces.com/gym/104768/problem/M
// Memory Limit: 1024 MB
// Time Limit: 2500 ms
// Begin:2024-10-20 17:07:06
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 5, M = 1e9 + 7, mod = 998244353;
#define YES {cout << "Yes" << endl; return ;}
#define NO {cout << "No" << endl; return ;}

void solve(){
    int n;
    cin >> n;
    vector<int> a(n + 1), b(n + 1);
    vector<int> now;
    for (int i = 1; i <= n; i++) cin >> a[i] >> b[i], now.push_back(a[i]);
    auto check = [&](int mid){
    	int sum = 0;
    	for (int i = 1; i <= n; i ++ ) if (a[i] >= mid) sum ++;
    	vector<int> s(n + 1);
    	int res = INT_MIN, l = -1, r = -1;
    	int minn = 0, id = -1;
    	for (int i = 1; i <= n; i++){
    		if (a[i] < mid && b[i] < mid) s[i] = 0;
    		else if (a[i] >= mid && b[i] >= mid) s[i] = 0;
    		else if (a[i] < mid && b[i] >= mid) s[i] = 1;
    		else if (a[i] >= mid && b[i] < mid) s[i] = -1;
    		s[i] += s[i - 1];
    		if (res < s[i] - minn) {res = s[i] - minn; l = id; r = i;}
    		if (s[i] < minn) {minn = s[i]; id = i;}
    	}
    	int cnt = sum + res;
    	if (n / 2 + 1 <= cnt) return true;
    	return false;
    };
    int l = 1, r = 1e9;
    while (l < r){
    	int mid = (l + r + 1) >> 1;
    	if (check(mid)){
    		l = mid;
    	}else{
    		r = mid - 1;
    	}
    }
    cout << l << "\n";
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int ___ = 1;
    // cin >> ___;
    while (___--)
        solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 3876kb

input:

1
2 1

output:

1

result:

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