KFLIES (Phineas and Flies)
Problem link -LINK
Author- Manas Rawat
Tester - Aagam Jain
EditoriaIist -Aman Gupta
Difficulty : Easy
Problem Tag : Greedy , 2-D array
Explanation :
This is the simple problem use bruteforce approch for finding maximum flies in in the net.
Solution :
AUTHOR Solution
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,k;
cin >> n >> m >> k;
char box[n][m];
for(int i = 0; i < n; i++){
string s;
cin >> s;
for(int j = 0; j < m; j++) box[i][j] = s[j];
}
int nax = 0;
int ii,jj;
ii = jj = -1;
for(int row = 0; row + k <= n; row++){
for(int col = 0; col + k <= m; col++){
int cnt = 0;
for(int i = row + 1; i < row + k - 1; i++) for(int j = col + 1; j < col + k - 1; j++) if(box[i][j] == '*') ++cnt;
if(cnt > nax){
nax = cnt;
ii = row;
jj = col;
}
}
}
cout << nax << "\n";
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(i == ii && j == jj) cout << '+';
else if(i == ii + k - 1 && j == jj) cout << '+';
else if(i == ii && j == jj + k - 1) cout << '+';
else if(i == ii + k - 1 && j == jj + k - 1) cout << '+';
else if((i == ii || i == ii + k - 1) && (j > jj && j < jj + k - 1)) cout << '-';
else if((j == jj || j == jj + k - 1) && (i > ii && i < ii + k - 1)) cout << '|';
else cout << box[i][j];
}
cout << "\n";
}
}
TESTER Solution
import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef
{
static int max_flies(char win[][],int x ,int y ,int k)
{
int c = 0;
for(int i=x+1;i<x+k-1;i++)
{
for(int j=y+1;j<y+k-1;j++)
{
if(win[i][j]=='*')
c++;
}
}
return c;
}
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int r=sc.nextInt(),c=sc.nextInt(),k=sc.nextInt();
char win[][]=new char[r][c];
for(int i=0;i<r;i++)
{
String s=sc.next();
for(int j=0;j<c;j++)
win[i][j]=s.charAt(j);
}
int x = -9, y = -9;
int count = 0;
for(int i=0;i+k<=r;i++)
{
for(int j=0;j+k<=c;j++)
{
int fl=max_flies(win, i, j, k);
if(fl>count){
count=fl;
x=i;
y=j;
}
}
}
System.out.println(count);
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
if((i==x && j==y) || (i==x+k-1 && j==y) || (i==x+k-1 && j==y+k-1) || (i==x && j==y+k-1))
System.out.print("+");
else if((j==y || j==y+k-1) && (i>x && i<x+k-1))
System.out.print("|");
else if((i == x || i == x + k - 1) && (j > y && j < y + k - 1))
System.out.print("-");
else
System.out.print(win[i][j]);
}
System.out.println();
}
}
}