# Untitled

unknown
plain_text
2 years ago
2.9 kB
2
Indexable
Never
```//Please do not modify the header files.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;

int size=1000000;

class Queue
{
public:
int dequeue(int q[], int start, int end);
bool enqueue(int q[], int start, int end);
bool isempty(int q[], int start, int end);

};

bool Queue::isempty(int q[], int start, int end)
{
if(start==end) // start and end points to -1 in the beginning and we use the logic : start points to 1st elt and end points to last elt
{
cout<<"Queue is empty";
return true;
}
else
return false;
}

int Queue::dequeue(int q[], int start, int end)// note start points to 1st elt and end points to index next to the last elt entered
{
if(start==end) // as start will pt to -1 and end will pt to 0 in the beginning (when no elts); and another case will be the one where start ptr is at the end and edn at the 0th index
{
cout<<"Queue is empty";
return -1;
}
else
{
int a=q[start];
start=(start+1)%size;
return a;
}
}

bool Queue::enqueue(int q[], int start, int end, int elt)
{
if((start<end && (start==0 && end==size-1)) || (start>end && start==end+1))
{
cout<<"Queue is full";
return false;
}
else
{
end=(end+1)%size;
q[end]=elt;
return true;
}
}

void findneighbouringcoordinates(int x, int y, int q1[], int q2[], int start1, int end1, int start2, int end2) //q1 and q2 are the queue to store neighbouring coordinates of (x,y)
{
Queue Q;
if(x-1>=0) //(x-1,y)
{
Q.enqueue(q1,start1, end1, x-1);
Q.enqueue(q2,start2, end2, y);
}
if(x+1<size)//for (x+1,y)
{
Q.enqueue(q1,start1, end1, x+1);
Q.enqueue(q2,start2, end2, y);
}
if(y+1<size)//for (x,y+1)
{
Q.enqueue(q1,start1, end1, x);
Q.enqueue(q2,start2, end2, y+1);
}
if(y-1>=0)//for (x,y-1)
{
Q.enqueue(q1,start1, end1, x);
Q.enqueue(q2,start2, end2, y-1);
}
}

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
Queue Q;
int m, int n;
cin>>m>>n;
int arr[m][n];

int q1[size], q2[size]; //2 queues
int start1=-1, end1=0, start2=-1, end2=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>A[i][j];
if(A[i][j]==2)
{
Q.enqueue(q1,start1,end1,i);
Q.enqueue(q2,start2,end2,j);
}
}
}

int n=start1<end1 ?(end1-start1):(size1-start1+end1); //finding no of elts in the queue
for(int i=0;i<n;i++)
{

}
return 0;
}```