Submission

Status:
[PPxSSSSSSS]

Score: 0

User: 998244353

Problemset: 02.Forbidden Boss Room

Language: cpp

Time: 0.307 second

Submitted On: 2025-03-31 14:37:23

/*******************
* what  the  sigma *
********************/
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <algorithm>
#include <stack>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set(x) tree<x, null_type, less<x>, rb_tree_tag, tree_order_statistics_node_update>
using namespace std;
#define lgm cin.tie(0)->sync_with_stdio(0);
#define be(x) x.begin(),x.end()
#define ve vector
#define ll long long
#define ld long double
bool enabledb=0;
#define DB(CODE) cout<<'\t'<<CODE<<endl;
#define SP <<' '<<
#define ull unsigned ll
#define f first
#define s second
#define pii pair<int, int>
#define tii tuple<int,int,int>
#define pll pair<ll,ll>
#define sz(x) (int)x.size()
#define pb push_back
const ll mod = 1e9+7,maxn=200005;
const ll INF=(ll)9e18;
int a[maxn];
signed main() {
    lgm;
    int t;
    cin >> t;
    while (t--) {
        ll n,m;
        cin >> n >> m;
        bool exist[m]={};
        ll curmx=0;
        exist[0]=1;
        ll sum=0;
        multiset<ll> ee;
        ee.insert(0);
        ll c;
        for (int i=0;i<n;i++) {
            cin >> c;
            sum=(sum+c)%m;
            auto c=ee.upper_bound(sum);
            if (c==ee.end()) curmx=max(curmx,sum);
            else curmx=max({curmx,sum,sum-*c+m});
            if (!exist[sum]) {
                ee.insert(sum);
            }
            exist[sum]=1;
        }
        cout << curmx << '\n';
    }
}