# HackerEarth Image Smoothing problem solution

In this HackerEarth Image Smoothing, problem-solution Smoothing is used to reduce noise within an image or to produce a less pixelated image. You have been given an image G of resolution N x N. Image will be represented as a 2D grid G of size N x N where Gij will denote intensity of color in a grayscale image of pixel (i,j).

You have been given a filter mask F of size (2 * M + 1) x (2 * M + 1). Using this filter mask, you have to perform a smoothing operation on the G and output the final image NewG. Smoothing operation for any particular pixel (i,j) can be described in the formula.

## HackerEarth Image Smoothing problem solution.

`#include<bits/stdc++.h>using namespace std;#define ll long long#define fre freopen("in.txt","r",stdin)#define pii pair<pair<int,int>, int>#define f first#define s second#define rep(i,n) for(int i=0;i<n;i++)#define pb push_backint I[111][111];int Ip[111][111];int N,M;bool valid(int i,int j) {    if(i>=1 and i<=N and j>=1 and j<=N) return 1;    return 0;}int main() {    freopen("in04.txt","r",stdin);    freopen("out04.txt","w",stdout);    int x;    cin >> N >> M;    map<pair<int,int>,int >F;    for(int i=-M;i<=M;i++) {        for(int j=-M;j<=M;j++) {            cin >> x;            F[{i,j}] = x;        }    }    for(int i=1;i<=N;i++) {        for(int j=1;j<=N;j++) {            cin >> I[i][j];        }    }    for(int i=1;i<=N;i++) {        for(int j=1;j<=N;j++) {            for(int p=-M;p<=M;p++) {                for(int q=-M;q<=M;q++) {                    if(valid(i+p,j+q))                        Ip[i][j]+=I[i+p][j+q]*F[{p,q}];                }            }        }    }    for(int i=1;i<=N;i++) {        for(int j=1;j<=N;j++) {            cout << Ip[i][j] << " ";        }        cout << "\n";    }}`

### Second solution

`#pragma GCC optimize("O3")#define _CRT_SECURE_NO_WARNINGS#include <fstream>#include <iostream>#include <string>#include <complex>#include <math.h>#include <set>#include <vector>#include <map>#include <queue>#include <stdio.h>#include <stack>#include <algorithm>#include <list>#include <ctime>#include <memory.h>#include <assert.h>#define y0 sdkfaslhagaklsldk#define y1 aasdfasdfasdf#define yn askfhwqriuperikldjk#define j1 assdgsdgasghsf#define tm sdfjahlfasfh#define lr asgasgash#define norm asdfasdgasdgsd#define have adsgagshdshfhds#define ends asdgahhfdsfshdshfd#define eps 1e-11#define M_PI 3.141592653589793#define bs 1000000007#define bsize 512#define ldouble long doubleusing namespace std;long long INF = 1e9;const int N = 1001;int n,m,board[N][N],coef[N][N];int get(int a,int b){  if (a<0||b<0)    return 0;  return board[a][b];}int main(){  ios_base::sync_with_stdio(0);  //cin.tie(0);  cin>>n>>m;  for (int i=0;i<=m*2;i++)  {    for (int j=0;j<=m*2;j++)    {      assert(cin>>coef[i][j]);    }  }  for (int i=1;i<=n;i++)  {    for (int j=1;j<=n;j++)    {      assert(cin>>board[i][j]);    }  }  for (int i=1;i<=n;i++)  {    for (int j=1;j<=n;j++)    {      int here=0;      for (int q=0;q<=m*2;q++)      {        for (int w=0;w<=m*2;w++)        {          here+=get(i-m+q,j-m+w)*coef[q][w];        }      }      if (j>1)        cout<<" ";      cout<<here;    }    cout<<endl;  }  cin.get(); cin.get();  return 0;}`