Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <cstdlib>
- using namespace std;
- typedef struct Punct {
- int l;
- int c;
- } Punct;
- int n, **a, x;
- Punct *coada, punct;
- int dl[] = {-1, 0, 1 , 0},
- dc[] = {0, 1, 0 , -1};
- bool oob (int l, int c) {
- if (l < 0 || l >= n) {
- return true;
- } else if (c < 0 || c >= n) {
- return true;
- } else return false;
- }
- void init (Punct *coada) {
- for (int i = 0; i < n*n; i++) {
- coada[i].l = 0;
- coada[i].c = 0;
- }
- }
- void lee () {
- int p = 0, u = 0;
- bool exit = false;
- coada[p].l = 0;
- coada[p].c = 0;
- while (p <= u && !exit) {
- if (a[coada[p].l][coada[p].c] == x) {
- punct.l = coada[p].l;
- punct.c = coada[p].c;
- exit = true;
- }
- for (int i = 0; i < 4; i++) {
- if (!oob(coada[p].l + dl[i], coada[p].c + dc[i]) && a[coada[p].l + dl[i]][coada[p].c + dc[i]] > a[coada[p].l][coada[p].c] && a[coada[p].l + dl[i]][coada[p].c + dc[i]] <= x) {
- u++;
- coada[u].l = coada[p].l + dl[i];
- coada[u].c = coada[p].c + dc[i];
- }
- }
- p++;
- }
- }
- int main()
- {
- /* INPUT HERE:
- 4
- 1 3 9 10
- 2 4 11 13
- 5 6 12 14
- 7 15 16 19
- 13
- */
- scanf("%d", &n);
- //--
- a = (int **) malloc (sizeof(int *) * n);
- for (int i = 0; i < n; i++) {
- a[i] = (int *) malloc (sizeof(int) * n);
- }
- coada = (Punct *) malloc (sizeof(Punct) * n * n);
- init(coada);
- //--
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- scanf("%d", &a[i][j]);
- }
- }
- scanf("%d", &x);
- lee();
- printf("%d %d", punct.l+1, punct.c+1);
- free(a);
- free(coada);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment