169692025-05-19 18:00:35horkaLabirintuscpp17Hibás válasz 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;
}*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz159ms24812 KiB
subtask20/15
3Hibás válasz21ms2612 KiB
4Elfogadva8ms2804 KiB
5Hibás válasz104ms1332 KiB
6Hibás válasz101ms852 KiB
7Hibás válasz72ms2356 KiB
8Hibás válasz74ms2356 KiB
subtask318/18
9Elfogadva151ms11504 KiB
10Elfogadva128ms1904 KiB
11Elfogadva308ms27956 KiB
12Elfogadva275ms27700 KiB
13Elfogadva273ms27700 KiB
14Elfogadva293ms27884 KiB
subtask40/28
15Hibás válasz216ms23856 KiB
16Elfogadva216ms23612 KiB
17Elfogadva223ms23044 KiB
18Elfogadva128ms20736 KiB
19Hibás válasz226ms24628 KiB
20Elfogadva97ms20992 KiB
21Hibás válasz94ms20792 KiB
22Hibás válasz223ms24832 KiB
23Elfogadva222ms24632 KiB
subtask50/39
24Hibás válasz28ms316 KiB
25Hibás válasz14ms316 KiB
26Hibás válasz104ms1348 KiB
27Hibás válasz101ms1016 KiB
28Hibás válasz101ms820 KiB
29Hibás válasz101ms848 KiB
30Elfogadva273ms27700 KiB
31Elfogadva257ms27368 KiB
32Hibás válasz216ms24884 KiB
33Hibás válasz272ms27456 KiB
34Hibás válasz209ms25908 KiB
35Hibás válasz202ms25852 KiB
36Hibás válasz217ms20788 KiB
37Hibás válasz223ms23020 KiB
38Hibás válasz221ms21484 KiB
39Hibás válasz217ms23600 KiB