Language: C++

#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
//#define int long long
typedef long long ll;
using namespace std;

ll N, x;
ll a[2000];
ll magic[2001];
pair<ll, ll> d[2010];

signed main()
{
	cin >> N >> x;
	rep(i,N) {
		cin >> a[i];
		d[i].first = a[i];	//コスト
		d[i].second = 0;	//魔法の回数
	}

	/*
	rep(i,N) {
		printf("%d cost = %d, magic = %d\n", i + 1, d[i].first, d[i].second);
	}
	*/

	bool change = true;
	while (change) {
		change = false;
		rep(i,N) {
			if (i == 0) {
				if (d[i].first > d[N-1].first + x) {
					d[i].first = d[N-1].first + x;
					d[i].second += d[N-1].second + 1;
					change = true;
				}
			} else {
				if (d[i].first > d[i-1].first + x) {
					d[i].first = d[i-1].first + x;
					d[i].second += d[i-1].second + 1;
					change = true;
				}
			}
		}
	}

	/*
	rep(i,N) {
		printf("%d cost = %d, magic = %d\n", i + 1, d[i].first, d[i].second);
	}
	*/
	

	rep(i,2001) magic[i] = 0;

	ll ans = 0;
	int magic_max_cnt = 0;
	rep(i,N) {
		ans += d[i].first - x * d[i].second;
		magic_max_cnt = max(magic_max_cnt, d[i].second);
		magic[d[i].second]++;
	}
	/*
	printf("magic_max_cnt = %d\n", magic_max_cnt);
	rep(i,10) {
		printf("magic[%d] = %d\n", i, magic[i]);
	}*/

	/*
	for (int i=1; i<=magic_max_cnt; i++) {
		ans -= x * magic[i];
	}
	*/
	ans += x * magic_max_cnt;

	cout << ans << endl;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:60:36: error: no matching function for call to 'max(int&, long long int&)'
   60 |                 magic_max_cnt = max(magic_max_cnt, d[i].second);
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:60:36: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   60 |                 magic_max_cnt = max(magic_max_cnt, d[i].second);
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61:
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:60:36: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   60 |                 magic_max_cnt = max(magic_max_cnt, d[i].second);
      |                                 ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~