#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using vi = vector<ll>;
using vvi = vector<vi>;
using vc = vector<char>;
using vvc = vector<vc>;
using vb = vector<bool>;
using vvb = vector<vb>;
using vs = vector<string>;
using pii = pair<ll, ll>;
using vpii = vector<pii>;
using vvpii = vector<vpii>;
using mint = modint998244353;
// using mint = modint1000000007;
#define endl '\n'
#define rep(i, a) for (ll i = 0; i < a; i++)
#define f(i, a, b) for (ll i = a; i < b; i++)
#define rf(i, a, b) for (ll i = a; i > b; i--)
#define all(x) (x).begin(), (x).end()
const ll INF = LLONG_MAX / 4;
vi dx = {1, 0, -1, 0, 1, 1, -1, -1};
vi dy = {0, 1, 0, -1, 1, -1, 1, -1};
void io_setup() {
cin.tie(0);
ios::sync_with_stdio(0);
cout << fixed << setprecision(16);
}
int main(void) {
io_setup();
ll n,m,c;
cin>> n >> m >> c;
vi a(n);
rep(i,n)cin >> a[i];
sort(all(a));
vpii num = {{0,0}};
rep(i,n){
if(a[i] == num[num.size()-1].first)num[num.size()-1].second++;
else num.push_back({a[i], 1});
}
num.push_back({m,0});
int size = num.size();
rep(i,size){
num.push_back({num[i].first + m, num[i].second});
}
int l=0, r=0;
ll sum = 0;
ll ans = 0;
rep(i,num.size()/2){
l = num[i].first;
if(i>0)sum -= num[i-1].second;
while(sum<c){
sum += num[r].second;
r++;
}
if(i>0)ans += (num[i].first - num[i-1].first) * sum;
// cerr << i << " " << num[i].first - num[i-1].first << " " << sum << endl;
}
cout << ans << endl;
}
Main.cpp: In function ‘int main()’:
Main.cpp:21:36: warning: comparison of integer expressions of different signedness: ‘ll’ {aka ‘long long int’} and ‘std::vector<std::pair<long long int, long long int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
21 | #define rep(i, a) for (ll i = 0; i < a; i++)
| ^
Main.cpp:56:5: note: in expansion of macro ‘rep’
56 | rep(i,num.size()/2){
| ^~~
Main.cpp:53:9: warning: variable ‘l’ set but not used [-Wunused-but-set-variable]
53 | int l=0, r=0;
| ^