#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Function to check if given indices are valid in the matrix
int isValid(int row, int col, int N, int M) {
return (row >= 0 && row < N && col >= 0 && col < M);
}
// Function to count the number of qualities a girl possesses
int countQualities(int matrix[][100], int row, int col, int N, int M) {
int count = 0;
for (int i = row - 1; i <= row + 1; i++) {
for (int j = col - 1; j <= col + 1; j++) {
if (isValid(i, j, N, M) && !(i == row && j == col) && matrix[i][j] == 1) {
count++;
}
}
}
return count;
}
// Function to find the suitable bride for Sam
void findBride(int matrix[][100], int N, int M) {
int minDistance = N + M; // Initialize to maximum possible distance
int maxQualities = 0;
int brideRow = -1, brideCol = -1;
// Loop through the matrix to find the bride with maximum qualities
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (matrix[i][j] == 1) {
int qualities = countQualities(matrix, i, j, N, M);
if (qualities > maxQualities) {
maxQualities = qualities;
brideRow = i;
brideCol = j;
} else if (qualities == maxQualities) {
// If multiple brides have the same number of qualities,
// find the one with minimum distance to Sam's house
int distance = abs(0 - i) + abs(0 - j);
if (distance < minDistance) {
minDistance = distance;
brideRow = i;
brideCol = j;
} else if (distance == minDistance) {
printf("Polygamy not allowed\n");
return;
}
}
}
}
}
// If no suitable bride found
if (brideRow == -1 || brideCol == -1) {
printf("No suitable girl found\n");
} else {
printf("%d:%d:%d\n", brideRow + 1, brideCol + 1, maxQualities);
}
}
int main() {
int N, M;
scanf("%d %d", &N, &M);
int matrix[100][100];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &matrix[i][j]);
}
}
findBride(matrix, N, M);
return 0;
}
#include<stdio.h>
int main()
{
int n,m,i,g[50][50],j,p,q,max=0,cnt=0,k=1,c=0,u=1,x[30],y[30],t1,min=0, sc[50],e,f,ct=0,a[50],count=0,t2=0,t=0;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%d",&g[i][j]);
} }
g[1][1]=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{ cnt=0;
if(g[i][j]==1)
{
t++;
for(p=i-1;p<=i+1;p++)
{
for(q=j-1;q<=j+1;q++)
{
if(g[p][q]==1)
{ cnt++;
} } }
cnt=cnt-1;
a[k]=cnt;
k++;
} } }
for(k=1;k<=t;k++)
{ if(a[k]>max) max=a[k];
}
if(max==0)
{ printf("No suitable girl found"); goto x; }
for(k=1;k<=t;k++)
{ if(a[k]==max)
c++; }
for(k=1;k<=t;k++)
{ t2=0;
if(a[k]==max)
{ for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{ if(g[i][j]==1) t2++;
if(t2==k)
{ x[u]=i; y[u]=j; u++;
} } } } }
t1=u-1;
if(c==1)
printf("%d:%d:%d",x[1],y[1],max);
else
{ for(u=1;u<=t1;u++)
{ e=x[u]-1;
f=y[u]-1;
if(e>=f)
{ sc[u]=e;
}
else sc[u]=f;
}
min=sc[1];
for(u=1;u<=t1;u++)
{ if(sc[u]<min) min=sc[u];
}
for(u=1;u<=t1;u++)
{ if(sc[u]==min) count++;
}
if(count>1)
printf("Polygamy not allowed");
if(count==1)
{ for(u=1;u<=t1;u++)
{ if(sc[u]==min)
printf("%d:%d:%d",x[u],y[u],max);
} } }
x: return 0;
}
OUTPUT:
6 6
1 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 0
0 0 1 1 1 0
0 0 1 1 1 0
0 0 0 0 0 0
Related Links: