CSES - Putka Open 2020 – 2/5 - Results
Submission details
Task:Kortit
Sender:AtskaFin
Submission time:2020-09-25 19:10:35 +0300
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#20.02 s2details

Code

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

using namespace std;

int n, half;
vector<int> a;
set<int> s;
vector<int> b;

void f() {
  cin >> n;
  half = n/2;

  s.clear();
  a.clear();
  b.clear();
  a.resize(half);
  
  for (int i = 0; i < half; i++) {
    int x;
    cin >> x;
    s.insert(x);
    a[i] = x;
  }

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

  for (int i = n, ii = 0; i > 0; i--) {
    if (i == a[ii]) ii++;
    else (b.push_back(i));
  }

  int points = 0;
  for (int i = 0; i < half; i++) {
    //cout << "finding bigger than: " << b[i] << "\n";
    auto it = s.upper_bound(b[i]);

    if (it == s.end()) {
      //cout << "end" << "\n";
      auto iter = s.begin();
      //cout << *iter << "\n";
      s.erase(iter);
    } else {
      //cout << *it << "\n";
      s.erase(it);
      points++;
    }
  }

  cout << points << "\n";
}

int t;
int main() {
  cin >> t;
  for (int i = 0; i < t; i++) f();
}

Test details

Test 1

Group: 1, 2

Verdict:

input
1000
2
1
6
2 4 5
...

correct output
0
2
0
2
1
...

user output
0
2
0
2
1
...
Truncated

Test 2

Group: 2

Verdict:

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
...
Truncated