169762025-05-19 18:22:23algoproLabirintuscpp17Hibás válasz 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;
}*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz167ms23860 KiB
subtask20/15
3Hibás válasz21ms2612 KiB
4Elfogadva7ms2612 KiB
5Hibás válasz104ms1572 KiB
6Hibás válasz101ms820 KiB
7Hibás válasz72ms2356 KiB
8Hibás válasz74ms2528 KiB
subtask318/18
9Elfogadva150ms9012 KiB
10Elfogadva127ms820 KiB
11Elfogadva307ms24048 KiB
12Elfogadva273ms23860 KiB
13Elfogadva273ms24116 KiB
14Elfogadva294ms24108 KiB
subtask40/28
15Hibás válasz222ms21244 KiB
16Elfogadva216ms21044 KiB
17Elfogadva221ms20532 KiB
18Elfogadva128ms20536 KiB
19Hibás válasz225ms22008 KiB
20Elfogadva98ms20980 KiB
21Hibás válasz94ms20788 KiB
22Hibás válasz223ms22068 KiB
23Elfogadva221ms22068 KiB
subtask50/39
24Hibás válasz28ms512 KiB
25Hibás válasz14ms508 KiB
26Hibás válasz104ms1332 KiB
27Hibás válasz101ms820 KiB
28Hibás válasz101ms912 KiB
29Hibás válasz101ms820 KiB
30Elfogadva273ms23856 KiB
31Elfogadva266ms23788 KiB
32Hibás válasz209ms23860 KiB
33Hibás válasz268ms23864 KiB
34Hibás válasz201ms24112 KiB
35Hibás válasz212ms23860 KiB
36Hibás válasz216ms20728 KiB
37Hibás válasz216ms20968 KiB
38Hibás válasz216ms21556 KiB
39Hibás válasz224ms20532 KiB