169692025-05-19 18:00:35horkaLabirintuscpp17Wrong answer 18/100308ms27956 KiB
#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 answer159ms24812 KiB
subtask20/15
3Wrong answer21ms2612 KiB
4Accepted8ms2804 KiB
5Wrong answer104ms1332 KiB
6Wrong answer101ms852 KiB
7Wrong answer72ms2356 KiB
8Wrong answer74ms2356 KiB
subtask318/18
9Accepted151ms11504 KiB
10Accepted128ms1904 KiB
11Accepted308ms27956 KiB
12Accepted275ms27700 KiB
13Accepted273ms27700 KiB
14Accepted293ms27884 KiB
subtask40/28
15Wrong answer216ms23856 KiB
16Accepted216ms23612 KiB
17Accepted223ms23044 KiB
18Accepted128ms20736 KiB
19Wrong answer226ms24628 KiB
20Accepted97ms20992 KiB
21Wrong answer94ms20792 KiB
22Wrong answer223ms24832 KiB
23Accepted222ms24632 KiB
subtask50/39
24Wrong answer28ms316 KiB
25Wrong answer14ms316 KiB
26Wrong answer104ms1348 KiB
27Wrong answer101ms1016 KiB
28Wrong answer101ms820 KiB
29Wrong answer101ms848 KiB
30Accepted273ms27700 KiB
31Accepted257ms27368 KiB
32Wrong answer216ms24884 KiB
33Wrong answer272ms27456 KiB
34Wrong answer209ms25908 KiB
35Wrong answer202ms25852 KiB
36Wrong answer217ms20788 KiB
37Wrong answer223ms23020 KiB
38Wrong answer221ms21484 KiB
39Wrong answer217ms23600 KiB