CSES - Datatähti 2025 alku - Results
Submission details
Task:Robotti
Sender:onniK
Submission time:2024-11-06 11:24:38 +0200
Language:C++ (C++17)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:16:35: warning: comparison of integer expressions of different signedness: 'int' and 'const size_type' {aka 'const long unsigned int'} [-Wsign-compare]
   16 |         int left_distance = (left != string::npos) ? robot_position - left : n;
      |                              ~~~~~^~~~~~~~~~~~~~~
input/code.cpp:17:37: warning: comparison of integer expressions of different signedness: 'int' and 'const size_type' {aka 'const long unsigned int'} [-Wsign-compare]
   17 |         int right_distance = (right != string::npos) ? right - robot_position : n;
      |                               ~~~~~~^~~~~~~~~~~~~~~
input/code.cpp:19:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   19 |         if (left_distance < right_distance)
      |         ^~
input/code.cpp:21:13: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   21 |             robot_position = left;...

Code

#include <iostream>
#include <string>
using namespace std;

int main() {
    int n;
    string rooms;
    cin >> n >> rooms;

    int robot_position = rooms.find('R');
    int steps = 0, coins = 0;

    while (true) {
        int left = rooms.rfind('*', robot_position - 1);
        int right = rooms.find('*', robot_position + 1);
        int left_distance = (left != string::npos) ? robot_position - left : n;
        int right_distance = (right != string::npos) ? right - robot_position : n;

        if (left_distance < right_distance) 
            steps += left_distance;
            robot_position = left;
        } else if (right_distance < left_distance) {
            steps += right_distance;
            robot_position = right;
        } else {
            break;
        }

        coins++;
        rooms[robot_position] = '.';
    }

    cout << steps << " " << coins << endl;

    return 0;
}


//6.11.2024 11:22 Onni Kolehmaienen
// Syöte esimerkki:
//20
//**.*......*.R*...*..
//Tuloste:
//4 2