| 16967 | 2025-05-19 17:50:48 | horka | Labirintus | cpp17 | Time limit exceeded 15/100 | 2.101s | 16948 KiB |
#include "labirintus.h"
using namespace std;
#include <cassert>
#include <cstdio>
#include <array>
#include <vector>
#include <queue>
vector<vector<int>> d;
int n,m;
void init_labyrinth(int r, int c, std::vector<std::vector<int>> L) {
//cout<<"itt"<<endl;
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];
return;
}
vector<array<int, 2>> dir{{0,1},{1,0},{-1,0},{0,-1}};
bool can_escape(int N, std::vector<int> u, std::vector<int> v) {
//cout<<"itt2"<<endl;
for(int i=0; i<N; i++)
{
d[u[i]+1][v[i]+1]=1;
}
vector<vector<bool>> s(n+2, vector<bool> (m+2, 1));
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
s[i][j]=(d[i][j]>0?1:0);
int mx=0;
for(auto &[a,b]:dir)
mx=max(mx,d[a+i][b+j]);
if(mx==2) s[i][j]=1;
}
vector<vector<bool>> vis(n+2, vector<bool> (m+2));
queue<array<int, 2>> q;
if(!s[1][1])
{
q.push({1,1});
vis[1][1]=1;
}
while(!q.empty())
{
auto [x,y]=q.front();
q.pop();
for(auto &[a,b]:dir)
if(!s[a+x][b+y] && !vis[a+x][b+y])
{
vis[a+x][b+y]=1;
q.push({a+x,b+y});
}
}
for(int i=0; i<N; i++)
d[u[i]+1][v[i]+1]=0;
return vis[n][m];
}
/*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;
}*/
| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 1ms | 500 KiB | ||||
| 2 | Time limit exceeded | 2.078s | 13108 KiB | ||||
| subtask2 | 15/15 | ||||||
| 3 | Accepted | 119ms | 1076 KiB | ||||
| 4 | Accepted | 65ms | 920 KiB | ||||
| 5 | Accepted | 136ms | 3368 KiB | ||||
| 6 | Accepted | 143ms | 3124 KiB | ||||
| 7 | Accepted | 119ms | 2660 KiB | ||||
| 8 | Accepted | 119ms | 2612 KiB | ||||
| subtask3 | 0/18 | ||||||
| 9 | Time limit exceeded | 2.088s | 1332 KiB | ||||
| 10 | Time limit exceeded | 2.088s | 2440 KiB | ||||
| 11 | Time limit exceeded | 2.088s | 13148 KiB | ||||
| 12 | Time limit exceeded | 2.089s | 13364 KiB | ||||
| 13 | Time limit exceeded | 2.081s | 13360 KiB | ||||
| 14 | Time limit exceeded | 2.082s | 13108 KiB | ||||
| subtask4 | 0/28 | ||||||
| 15 | Time limit exceeded | 2.088s | 14388 KiB | ||||
| 16 | Time limit exceeded | 2.088s | 14388 KiB | ||||
| 17 | Time limit exceeded | 2.089s | 14652 KiB | ||||
| 18 | Time limit exceeded | 2.091s | 13664 KiB | ||||
| 19 | Time limit exceeded | 2.084s | 14048 KiB | ||||
| 20 | Accepted | 202ms | 13116 KiB | ||||
| 21 | Accepted | 1.256s | 13108 KiB | ||||
| 22 | Time limit exceeded | 2.085s | 14124 KiB | ||||
| 23 | Time limit exceeded | 2.081s | 14132 KiB | ||||
| subtask5 | 0/39 | ||||||
| 24 | Accepted | 50ms | 820 KiB | ||||
| 25 | Accepted | 24ms | 564 KiB | ||||
| 26 | Accepted | 136ms | 3368 KiB | ||||
| 27 | Accepted | 143ms | 3124 KiB | ||||
| 28 | Accepted | 136ms | 3124 KiB | ||||
| 29 | Accepted | 142ms | 3124 KiB | ||||
| 30 | Time limit exceeded | 2.086s | 13108 KiB | ||||
| 31 | Time limit exceeded | 2.101s | 13364 KiB | ||||
| 32 | Time limit exceeded | 2.085s | 14300 KiB | ||||
| 33 | Time limit exceeded | 2.101s | 13364 KiB | ||||
| 34 | Time limit exceeded | 2.075s | 13204 KiB | ||||
| 35 | Time limit exceeded | 2.099s | 13364 KiB | ||||
| 36 | Accepted | 1.353s | 16948 KiB | ||||
| 37 | Time limit exceeded | 2.099s | 14388 KiB | ||||
| 38 | Accepted | 321ms | 16692 KiB | ||||
| 39 | Time limit exceeded | 2.082s | 13860 KiB | ||||