Initial commit
This commit is contained in:
66
2019/republic/12_d1/clubul.cpp
Normal file
66
2019/republic/12_d1/clubul.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <list>
|
||||
|
||||
using namespace std;
|
||||
|
||||
ifstream input_stream;
|
||||
ofstream output_stream;
|
||||
|
||||
|
||||
|
||||
void fillList(list<uint16_t> &L) {
|
||||
int counter = 1;
|
||||
for (auto i = L.begin(); i != L.end(); i++) {
|
||||
*i = counter;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
list<uint16_t> getPositions() {
|
||||
uint16_t N, K, R;
|
||||
input_stream >> N;
|
||||
input_stream >> K;
|
||||
input_stream >> R;
|
||||
|
||||
list<uint16_t> positions (N, 0);
|
||||
fillList(positions);
|
||||
|
||||
for (uint16_t i; i < R; i++) {
|
||||
uint16_t loser;
|
||||
input_stream >> loser;
|
||||
|
||||
auto loser_it = positions.begin();
|
||||
advance(loser_it, loser-1);
|
||||
|
||||
loser = *loser_it;
|
||||
|
||||
positions.erase(loser_it);
|
||||
positions.push_back(loser);
|
||||
|
||||
}
|
||||
|
||||
return positions;
|
||||
}
|
||||
|
||||
|
||||
int main() {
|
||||
input_stream.open("input.txt");
|
||||
output_stream.open("output.txt");
|
||||
|
||||
list<uint16_t> positions = getPositions();
|
||||
|
||||
uint16_t P;
|
||||
input_stream >> P;
|
||||
|
||||
auto dan_it = positions.begin();
|
||||
advance(dan_it, P - 1);
|
||||
cout << *dan_it << endl;
|
||||
|
||||
input_stream.close();
|
||||
output_stream.close();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user