CSES - Datatähti 2025 alku - Results
Submission details
Task:Kortit I
Sender:Arkistoija
Submission time:2024-11-05 10:58:26 +0200
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

In file included from /usr/include/c++/11/vector:67,
                 from /usr/include/c++/11/functional:62,
                 from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/11/algorithm:74,
                 from input/code.cpp:1:
/usr/include/c++/11/bits/stl_vector.h: In instantiation of 'struct std::_Vector_base<int, std::pmr::polymorphic_allocator<int> >':
/usr/include/c++/11/bits/stl_vector.h:389:11:   required from 'class std::vector<int, std::pmr::polymorphic_allocator<int> >'
input/code.cpp:33:30:   required from here
/usr/include/c++/11/bits/stl_vector.h:87:28: error: invalid use of incomplete type 'class std::pmr::polymorphic_allocator<int>'
   87 |         rebind<_Tp>::other _Tp_alloc_type;
      |                            ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/streambuf:41,...

Code

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int rounds;
int cards, player_a, player_b;
cin >> rounds;
int bases [rounds][3];
for (int i = 0; i < rounds; i++) {
cin >> cards >> player_a >> player_b;
bases [i][0] = cards;
bases [i][1] = player_a;
bases [i][2] = player_b;
}
for (int i = 0; i < rounds; i++) {
if (bases[i][0] < (bases[i][1] + bases[i][2])) {
// cout << "wins " << bases[i][0] << ",a + b " << (bases[i][1] + bases[i][2]) << endl;
cout << "NO\n";
}
else if (bases[i][1] + bases[i][2] == 1) {
cout << "NO\n";
}
else {
cout << "YES\n";
pmr::vector<int> player_a_hand;
pmr::vector<int> player_b_hand;
for (int k = bases[i][0]; k > 0 ; k--) {
player_a_hand.push_back(k);
player_b_hand.push_back(k);
}
int draws = bases[i][0] - (bases[i][1] + bases[i][2]);
string hand_1 = "";
string hand_2 = "";
for (int d = 1; d < draws+1; d++) {
string new_hand = to_string(d) + " ";
hand_1 += new_hand;
hand_2 += new_hand;
player_a_hand.pop_back();
player_b_hand.pop_back();
}
sort(player_b_hand.begin(), player_b_hand.end());
for (int player_a_wins = 0; player_a_wins < bases[i][2]; player_a_wins++ ) {
if (player_a_hand.back() == player_b_hand.back()){
cout << "PROBLEM";
char c = hand_2.at(1);
string end_card = " ";
cout << hand_2.front() << hand_2.at(1) << endl;
if (isspace(c)) {
end_card = to_string(hand_2.front());
hand_2.erase(0, 2);
string new_hand_2 = to_string(player_b_hand.back()) + " " + hand_2 + end_card + " ";
hand_2 = new_hand_2;
}
else {
end_card = to_string(hand_2.front()) + to_string(hand_2.at(1));
hand_2.erase(0, 3);
string new_hand_2 = to_string(player_b_hand.back()) + " " + hand_2 + end_card + " ";
hand_2 = new_hand_2;
}
player_b_hand.pop_back();
int new_hand_a = player_a_hand.back();
hand_1 += to_string(new_hand_a) + " ";
player_a_hand.pop_back();
}
else {
int new_hand_a = player_a_hand.back();
hand_1 += to_string(new_hand_a) + " ";
player_a_hand.pop_back();
int new_hand_b = player_b_hand.back();
hand_2 += to_string(new_hand_b) + " ";
player_b_hand.pop_back();
}
}
sort(player_a_hand.begin(), player_a_hand.end());
sort(player_b_hand.begin(), player_b_hand.end());
for (int player_b_wins = 0; player_b_wins < bases[i][1]; player_b_wins++ ) {
int new_hand_a = player_a_hand.back();
hand_1 += to_string(new_hand_a) + " ";
player_a_hand.pop_back();
int new_hand_b = player_b_hand.back();
hand_2 += to_string(new_hand_b) + " ";
player_b_hand.pop_back();
}
cout << hand_1 << "\n";
cout << hand_2 << "\n";
}
}
return 0;
}