Advertisement
Guest User

Untitled

a guest
Oct 8th, 2014
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <queue>
  5. #include <list>
  6. #include <climits>
  7. #include <string>
  8. #include <stack>
  9. #include <map>
  10. #include <set>
  11. #include <cmath>
  12. #include <cstdio>
  13. #include <cstring>
  14. #include <cstdlib>
  15. #include <sstream>
  16. #include <iomanip>
  17.  
  18. #define ALL(v) v.begin(), v.end()
  19. #define REP(i, a, b) for(int i = a; i < b; i++)
  20. #define REPD(i, a, b) for(int i = a; i > b; i--)
  21. #define REPLL(i, a, b) for(ll i = a; i < b; i++)
  22. #define FOR(i, a, b) for(int i = a; i <= b; i++)
  23. #define FORD(i, a, b) for(int i = a; i >= b; i--)
  24. #define FORLL(i, a, b) for(ll i = a; i <= b; i++)
  25. #define INF 1000000001
  26.  
  27. #define vit vector<int>::iterator
  28. #define sit set<int>::iterator
  29. #define vi vector<int>
  30. #define vpii vector<pii >
  31.  
  32. #define ll long long
  33. #define ld long double
  34.  
  35. #define PB push_back
  36. #define MP make_pair
  37. #define pii pair<int, int>
  38. #define pld pair<ld, ld>
  39. #define st first
  40. #define nd second
  41.  
  42. #define EPS 1e-9
  43. #define PI acos(-1.0)
  44. #define MAXN 10004
  45. #define MAXM 10005
  46.  
  47. using namespace std;
  48.  
  49. int z, n, m, t, c;
  50. vpii items;
  51. ll amuse[MAXN];
  52. int types[MAXM];
  53.  
  54. int main()
  55. {
  56. cin >> z;
  57. FOR(tc, 1, z) {
  58. cin >> n >> m >> c;
  59. memset(types, 0, sizeof(types));
  60. memset(amuse, 0, sizeof(amuse));
  61. items.clear();
  62. REP(i, 0, n) {
  63. cin >> t;
  64. types[t]++;
  65. }
  66. FOR(i, 1, m) if(types[i]) {
  67. items.PB(MP(types[i], i));
  68. }
  69. sort(ALL(items));
  70. FORD(i, items.size()-1, 0) {
  71. amuse[i] = (i < n-1 ? amuse[i+1] : 0) + (items[i].nd*items[i].nd)%c;
  72. }
  73. int i = 0;
  74. ll ret = 0;
  75. FOR(h, 1, n) {
  76. while(i < items.size() && items[i].st < h) i++;
  77. if(i == items.size()) break;
  78. ret = max(ret, h*(amuse[i]));
  79. }
  80. cout << "Case " << tc << ": " << ret << endl;
  81. }
  82.  
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement