CSES - Putka Open 2020 – 2/5 - Results
Submission details
Task:Kortit
Sender:jnalanko
Submission time:2020-09-25 23:13:18 +0300
Language:C++17
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED23
#2ACCEPTED77
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2details
#2ACCEPTED0.03 s2details

Code

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;
typedef long long LL;

// Always take smallest that beats the opponent. If does not exist, take smallest in hand.

void solve(){
    LL n; cin >> n;
    set<LL> have;
    for(LL i = 0; i < n/2; i++){
        LL x; cin >> x; have.insert(x);
    }
    set<LL> havenot;
    for(LL x = 1; x <= n; x++){
        if(have.count(x) == 0) havenot.insert(x);
    }

    LL ans = 0;
    for(LL r = 0; r < n/2; r++){
        LL x = *havenot.rbegin(); havenot.erase(x);
        auto yi = lower_bound(have.begin(), have.end(), x);
        if(yi == have.end()) have.erase(have.begin());
        else{
            have.erase(yi);
            ans++;
        }
    }
    cout << ans << "\n";
}

int main(){
    LL t; cin >> t; while(t--) solve();
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
1000
2
1
6
2 4 5
...

correct output
0
2
0
2
1
...

user output
0
2
0
2
1
...

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
70
56 23 58 70 2 57 27 61 47 3 42...

correct output
30
15
1
38
29
...

user output
30
15
1
38
29
...