fork download
  1. #include<stdio.h>
  2. #include<algorithm>
  3. #define MAX 10000009
  4. using namespace std;
  5. typedef long long ll;
  6. int main()
  7. {
  8. ll n,mod,fact,result,sum,iter;
  9. //scanf("%lld",&test);
  10. //while(test--)
  11. //{
  12. scanf("%lld%lld",&n,&mod);
  13. ll arr[n];
  14. fact=1;
  15. sum=0;
  16. iter=0;
  17. result=0;
  18. for(ll i=0;i<n;i++)
  19. {
  20. scanf("%lld",&arr[i]);
  21. arr[i]%=mod;
  22. }
  23. sort(arr,arr+n);
  24. for(ll i=1;i<=arr[n-1];i++)
  25. {
  26. if(i>=mod)
  27. break;
  28.  
  29. fact=fact*i;
  30. fact%=mod;
  31.  
  32. sum=sum+(i*fact);
  33. sum%=mod;
  34.  
  35. if(i==arr[iter])
  36. {
  37. result+=sum;
  38. result%=mod;
  39. iter++;
  40. }
  41. }
  42. for(ll i=iter;i<n;i++) //+1 or +0
  43. {
  44. result+=sum;
  45. result%=mod;
  46. }
  47.  
  48. for(ll i=0;i<n;i++)
  49. {
  50. if(arr[i]%2==0)
  51. {
  52. sum=arr[i]/2;
  53. sum*=arr[i];
  54. sum%=mod;
  55. sum*=(arr[i]+1);
  56. sum%=mod;
  57. }
  58. else
  59. {
  60. sum=(arr[i]+1)/2;
  61. sum*=arr[i];
  62. sum%=mod;
  63. sum*=(arr[i]);
  64. sum%=mod;
  65. }
  66. result+=sum;
  67. result%=mod;
  68. }
  69.  
  70.  
  71. printf("%lld\n",result);
  72. //}
  73. return 0;
  74. }
Success #stdin #stdout 0s 3104KB
stdin
5 7
1 2 3 4 5
stdout
6