fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. signed main()
  5. {
  6. int t;
  7. cin>>t;
  8. while (t--)
  9. {
  10. int n,p;
  11. cin>>n>>p;
  12. int a[n];
  13. for (int i=0;i<n;i++)
  14. {
  15. cin>>a[i];
  16. }
  17. map<int,int> ans;
  18. ans[0]=1;
  19. ans[p]=1;
  20. int now=0;
  21. int maxx=0,answ=0;
  22. for (int i=0;i<n;i++)
  23. {
  24. now=(now+a[i])%p;
  25. pair<int,int> x=*(ans.lower_bound((now+1+p)%p));
  26. if ((now-x.first+p)%p>maxx)
  27. {
  28. maxx=(now-x.first+p)%p;
  29. answ=x.second;
  30. }
  31. else if ((now-x.first+p)%p==maxx)
  32. {
  33. answ+=x.second;
  34. }
  35. ans[now]++;
  36. }
  37. cout<<maxx<<" "<<answ<<"\n";
  38. }
  39. return 0;
  40. }
Success #stdin #stdout 0s 16056KB
stdin
4
2 3
1 2
3 5
2 4 3
3 100
1 3 5
4 3
1 2 3 4
stdout
2 1
4 2
9 1
2 2