Language: C++

#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdlib.h>
#include <string.h>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <stdio.h>
#include <tuple>
#include <bitset>
#include <cfloat>
#include <fstream>
#include <limits.h>
#include <list>
#include <math.h>
#include <random>
#include <unordered_map>
#include <unordered_set>
#include <bitset>
#include <numeric>
#include <utility>
#include <sstream>

template<class T> inline bool chmin(T& a, T b) {
	if (a > b) {
		a = b;
		return true;
	}
	return false;
}
template<class T> inline bool chmax(T& a, T b) {
	if (a < b) {
		a = b;
		return true;
	}
	return false;
}

using namespace std;
#define int long long
#define ll long long
#define rep(i, n) for (ll i = 0; i < (n); i++)
#define FOR(i,a,b) for(ll i=(a);i<(b);i++)
#define FORR(i,a,b)for(ll i=(a);i<=(b);i++)
#define repr(i,n) for(ll i=n;i>=0;i--)
#define P pair<ll, ll>
#define sz(x) (ll)x.size()
#define ALL(x) (x).begin(),(x).end()
#define ALLR(x) (x).rbegin(),(x).rend()
#define VE vector<ll>
#define COUT(x) cout<<(x)<<endl
#define MA map<ll,ll>
#define SE set<ll>
#define PQ priority_queue<ll>
#define PQR priority_queue<ll,VE,greater<ll>>
#define COUT(x) cout<<(x)<<endl
#define YES(n) cout << ((n) ? "YES" : "NO"  ) << endl
#define Yes(n) cout << ((n) ? "Yes" : "No"  ) << endl
#define EPS (1e-10)
ll gcd(ll a, ll b) {
	if (a < b)swap(a, b);
	if (b == 0) return a;
	return gcd(b, a % b);
}
ll lcm(ll a, ll b) {
	ll g = gcd(a, b);
	return a / g * b;
}
bool prime(ll n) {
	for (ll i = 2; i <= sqrt(n); i++) {
		if (n%i == 0)return false;
	}
	return n != 1;
}


const long long MOD = 1000000007;
const long long INF = 1LL << 60;


const int MAX_N = 100010;

signed main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int h, w; cin >> h >> w;
	vector<string>field(h); rep(i, h)cin >> field[i];
	vector<VE>l(h, VE(w)), r(h, VE(w)), d(h, VE(w)), u(h, VE(w));
	rep(i, h)rep(j, w) {
		if (field[i][j] == '#')l[i][j] = 0;
		else if (j == 0)l[i][j] = 0;
		else l[i][j] = l[i][j - 1] + 1;
	}
	rep(i, h) {
		repr(j, w - 1, 0) {
			if (field[i][j] == '#')r[i][j] = 0;
			else if (j == w - 1)r[i][j] = 0;
			else r[i][j] = r[i][j + 1] + 1;
		}
	}
	rep(j, w) {
		rep(i, h) {
			if (field[i][j] == '#')u[i][j] = 0;
			else if (i == 0)u[i][j] = 0;
			else u[i][j] = u[i - 1][j] + 1;
		}
	}
	rep(j, w) {
		for (int i = h - 1; i >= 0; i--) {
			if (field[i][j] == '#')d[i][j] = 0;
			else if (i == h - 1)d[i][j] = 0;
			else d[i][j] = d[i + 1][j] + 1;
		}
	}
	int ans = 0;
	rep(i, h)rep(j, w) {
		if (field[i][j] == '.') {
			chmax(ans, l[i][j] + r[i][j] + d[i][j] + u[i][j] - 3);
		}
	}
	cout << ans +3<< endl;
	return 0;
}


Compiler output:
a.cc:104:33: error: macro "repr" passed 3 arguments, but takes just 2
  104 |                 repr(j, w - 1, 0) {
      |                                 ^
a.cc:54:9: note: macro "repr" defined here
   54 | #define repr(i,n) for(ll i=n;i>=0;i--)
      |         ^~~~
a.cc: In function 'int main()':
a.cc:104:17: error: 'repr' was not declared in this scope
  104 |                 repr(j, w - 1, 0) {
      |                 ^~~~