Submission
Status:
[PPPPPPPPPP]
Score: 100
User: fluke
Problemset: 02.Forbidden Boss Room
Language: cpp
Time: 0.036 second
Submitted On: 2025-04-06 09:02:40
#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pii pair<int,int>
#define emb emplace_back
#define em emplace
#define all(x) x.begin(),x.end()
#define sp <<" "<<
#define DB cout<<"\n";system("pause");
using namespace std;
void solve(){
ll n,m;
cin>>n>>m;
vector <ll> arr(n+1) , qsum(n+1);
for(int i=1;i<=n;i++)cin>>arr[i];
ll ans = 0;
set <ll> same;
same.insert(0);
for(int i=1;i<=n;i++){
qsum[i] = (qsum[i-1] + arr[i])%m;
ll want = qsum[i] + 1;
if(want == m)want = 0;
// want = *prev(same.upper_bound(want));
auto it = same.lower_bound(want);
if(it == same.end()){
ans = max(ans , qsum[i]);
same.insert(qsum[i]);
}
else {
ll remain = qsum[i] - *it;
if(remain < 0)remain += m;
ans = max(ans,remain);
same.insert(qsum[i]);
}
}
cout<<ans << "\n";
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);
int q;
cin>>q;
while(q--)solve();
}