169762025-05-19 18:22:23algoproLabirintuscpp17Wrong answer 18/100307ms24116 KiB
// UUID: d9768ee6-b73a-4295-859d-75391fd616e2
#include "labirintus.h"
using namespace std;
#include <cassert>
#include <cstdio>
#include <array>
#include <vector>
#include <queue>
vector<vector<int>> d;
int n,m;
const int mxn=1005;
array<int, 2> el[mxn][mxn];
int kell[mxn][mxn];
vector<array<int, 2>> dir{{0,1},{1,0},{-1,0},{0,-1}};
void init_labyrinth(int r, int c, std::vector<std::vector<int>> L) {
    n=r,m=c;
    d.assign(n+2, vector<int> (m+2, 1));
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            d[i][j]=L[i-1][j-1];
    queue<array<int, 2>> q;
    q.push({1,1});
    el[1][1]={1,0};
    while(!q.empty())
    {
        auto [x,y]=q.front();
        q.pop();
        for(auto &[a,b]:dir)
        {
            if(!d[a+x][b+y] && !el[a+x][b+y][0])
            {
                el[a+x][b+y]={x,y};
                q.push({a+x,b+y});
            }
        }
    }
    int i=n,j=m;
    kell[1][1]=1;
    while(i!=1 || j!=1)
    {
        kell[i][j]=1;
        auto [x,y]=el[i][j];
        i=x,j=y;
    }
    return;
}
bool can_escape(int N, std::vector<int> u, std::vector<int> v) {
    bool ok=1;
    for(int i=0; i<N; i++)
    {
        if(kell[u[i]+1][v[i]+1]) ok=0;
    }
    return ok;
}

/*int main() {
    int R, C, Q;
    assert(3 == scanf("%d %d %d", &R, &C, &Q));

    std::vector<std::vector<int>> labyrinth(R, std::vector<int>(C));
    for (int i = 0; i < R; ++i) {
        for (int j = 0; j < C; ++j) {
            char c;
            assert(1 == scanf(" %c", &c));
            labyrinth[i][j] = c - '0';
        }
    }
    init_labyrinth(R, C, labyrinth);

    std::vector<int> answers(Q);
    for (int i = 0; i < Q; ++i) {
        int N;
        assert(1 == scanf("%d", &N));
        std::vector<int> U(N), V(N);
        for (int j = 0; j < N; ++j) {
            assert(2 == scanf("%d %d", &U[j], &V[j]));
        }
        answers[i] = can_escape(N, U, V);
    }

    for (int i = 0; i < Q; ++i) {
        printf("%d\n", answers[i]);
    }

    return 0;
}*/
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Wrong answer167ms23860 KiB
subtask20/15
3Wrong answer21ms2612 KiB
4Accepted7ms2612 KiB
5Wrong answer104ms1572 KiB
6Wrong answer101ms820 KiB
7Wrong answer72ms2356 KiB
8Wrong answer74ms2528 KiB
subtask318/18
9Accepted150ms9012 KiB
10Accepted127ms820 KiB
11Accepted307ms24048 KiB
12Accepted273ms23860 KiB
13Accepted273ms24116 KiB
14Accepted294ms24108 KiB
subtask40/28
15Wrong answer222ms21244 KiB
16Accepted216ms21044 KiB
17Accepted221ms20532 KiB
18Accepted128ms20536 KiB
19Wrong answer225ms22008 KiB
20Accepted98ms20980 KiB
21Wrong answer94ms20788 KiB
22Wrong answer223ms22068 KiB
23Accepted221ms22068 KiB
subtask50/39
24Wrong answer28ms512 KiB
25Wrong answer14ms508 KiB
26Wrong answer104ms1332 KiB
27Wrong answer101ms820 KiB
28Wrong answer101ms912 KiB
29Wrong answer101ms820 KiB
30Accepted273ms23856 KiB
31Accepted266ms23788 KiB
32Wrong answer209ms23860 KiB
33Wrong answer268ms23864 KiB
34Wrong answer201ms24112 KiB
35Wrong answer212ms23860 KiB
36Wrong answer216ms20728 KiB
37Wrong answer216ms20968 KiB
38Wrong answer216ms21556 KiB
39Wrong answer224ms20532 KiB