Submission #1353793

#TimeUsernameProblemLanguageResultExecution timeMemory
1353793onebit1024Robots (IOI13_robots)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

const int INF = 1e9;
const int dx[] = {-1, 0, 1, 0}; // Up, Right, Down, Left
const int dy[] = {0, 1, 0, -1};

int N, W, H;
char grid[505][505];
int memo_move[505][505][4][2]; // Precomputed movement
int dist[10][10][505][505];

// Precompute where a robot stops when pushed
void precompute_moves(int x, int y, int d, int &rx, int &ry) {
    if (memo_move[x][y][d][0] != -1) {
        rx = memo_move[x][y][d][0];
        ry = memo_move[x][y][d][1];
        return;
    }

    int nx = x + dx[d], ny = y + dy[d], nd = d;
    
    // Check for "Turn" plates
    if (grid[x][y] == 'A') nd = (d + 3) % 4; // Counter-clockwise
    else if (grid[x][y] == 'C') nd = (d + 1) % 4; // Clockwise
    
    nx = x + dx[nd]; ny = y + dy[nd];

    if (nx < 0 || nx >= H || ny < 0 || ny >= W || grid[nx][ny] == 'x') {
        rx = x; ry = y; // Hits wall
    } else {
        precompute_moves(nx, ny, nd, rx, ry);
    }
    
    memo_move[x][y][d][0] = rx;
    memo_move[x][y][d][1] = ry;
}

void solve() {
    // 1. Initialize dist with INF
    // 2. Loop length 'len' from 1 to N:
    //    Loop start 'i' from 1 to N-len+1:
    //       int j = i + len - 1;
    //       If len > 1:
    //          Combine sub-robots: dist[i][j][x][y] = min(dist[i][k] + dist[k+1][j])
    //       
    //       3. Run Dijkstra/BFS to spread the 'moves' for this robot range [i, j]
    //          priority_queue<pair<int, pair<int, int>>> pq;
    //          pq.push({dist[i][j][x][y], {x, y}});
    //          While pq not empty:
    //             For d = 0 to 3:
    //                Get precomputed (rx, ry)
    //                If dist[i][j][rx][ry] > current_dist + 1:
    //                   dist[i][j][rx][ry] = current_dist + 1
    //                   pq.push(...)
}

int main() {
    // Input handling and precompute_moves loop
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccub00Um.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/ccTCiMgQ.o:robots.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccub00Um.o: in function `main':
grader.c:(.text.startup+0x1a1): undefined reference to `putaway'
collect2: error: ld returned 1 exit status