KFLIES(Phineas and Flies)Editorial

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();
    }
}
}
2 Likes

Nice question