CSES - Datatähti 2025 alku - Results
Submission details
Task:Robotti
Sender:Interaalimato
Submission time:2024-10-28 11:05:59 +0200
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:10:5: error: 'vector' was not declared in this scope
   10 |     vector<int> locations;
      |     ^~~~~~
input/code.cpp:2:1: note: 'std::vector' is defined in header '<vector>'; did you forget to '#include <vector>'?
    1 | #include <iostream>
  +++ |+#include <vector>
    2 | 
input/code.cpp:10:12: error: expected primary-expression before 'int'
   10 |     vector<int> locations;
      |            ^~~
input/code.cpp:18:13: error: 'locations' was not declared in this scope
   18 |             locations.push_back(i);
      |             ^~~~~~~~~
input/code.cpp:25:12: error: 'locations' was not declared in this scope
   25 |     while (locations.size() > 0)
      |            ^~~~~~~~~

Code

#include <iostream>
using namespace std;
int main()
{
int n;
string huoneet;
cin >> n >> huoneet;
vector<int> locations;
int pos;
int askeleet = 0;
int kolikot = 0;
for (int i = 1; i < n + 1; i++)
{
if (huoneet.at(i - 1) == '*')
{
locations.push_back(i);
}
else if (huoneet.at(i - 1) == 'R')
{
pos = i;
}
}
while (locations.size() > 0)
{
int start = 0;
int m = locations.size() - 1;
int end = m;
int dist = m + 1;
int nearestIdx = 0;
while (start <= end)
{
int mid = (start + end) / 2;
if ((locations[mid] < pos) && (mid == m + 1 || locations[mid + 1] > pos))
{
dist = pos - locations[mid];
nearestIdx = mid;
break;
}
else if ((locations[mid] > pos) && (mid == 0 || locations[mid - 1] < pos))
{
dist = locations[mid] - pos;
nearestIdx = mid;
break;
}
if (locations[mid] > pos)
{
end = mid - 1;
}
else if (locations[mid] < pos)
{
start = mid + 1;
}
}
if ((nearestIdx < m && dist == locations[nearestIdx + 1] - pos) || (nearestIdx > 0 && dist == pos - locations[nearestIdx - 1]))
{
break;
}
kolikot++;
askeleet += dist;
pos = locations[nearestIdx];
locations.erase(locations.begin() + nearestIdx);
}
cout << askeleet << " " << kolikot << "\n";
return 0;
}