COFO::1374D Zero Remainder Array

Problem

Point

Design

Big O(time)

Code

#define rep(i, a, b) for(int i = (a); i<(b); i++)
#define r_rep(i, a, b) for(int i=(a); i>(b); i--)
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
typedef long long ll;
using namespace std;

ll n, k;
map<ll, int> mp;
void input(){
    cin >> n >> k;
    mp.clear();
    rep(i, 0, n){
        ll x; cin >> x;
        if(x % k == 0) continue;
        mp[k - x%k]++;
    }
}

ll solve(){
    input();
    if(mp.size() == 0) return 0;
    ll cnt = 0, num = 0;
    for(auto it = mp.begin(); it != mp.end(); it++){
        if((it->second > cnt) || (it->second == cnt && it->first > num)){
            cnt = it->second;
            num = it->first;
        }
    }
    return (cnt-1) * k + num + 1;
}
int main(){
    freopen("input.txt", "r", stdin);
    int tc; cin >> tc;
    while(tc--)
        cout << solve() << '\n';
    return 0;
}