fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long int visit[10];
  4. long long int freq[10];
  5. long long int t[10];//t is for time
  6. int main()
  7. {
  8. long long int i,no_of_parata,no_of_cook,rank_of_cook,parata_cnt,top,ans,test;
  9. scanf("%lld",&test);
  10. while(test--)
  11. {
  12. scanf("%lld%lld",&no_of_parata,&no_of_cook);
  13. for(i=0; i<=9; i++)
  14. {
  15. visit[i]=1;
  16. freq[i]=0;
  17. t[i]=i;
  18. }
  19. parata_cnt=0;
  20. priority_queue<pair<long long int,long long int>,vector<pair<long long int,long long int> >, greater<pair<long long int,long long int> > > pq;
  21. for(i=0; i<no_of_cook; i++)
  22. {
  23. scanf("%lld",&rank_of_cook);
  24. freq[rank_of_cook]++;
  25. if(freq[rank_of_cook]==1)
  26. pq.push(make_pair((visit[rank_of_cook]*rank_of_cook),rank_of_cook));
  27. }
  28. while(!pq.empty())
  29. {
  30. top=pq.top().second;
  31. ans=pq.top().first;
  32. pq.pop();
  33. parata_cnt=freq[top]+parata_cnt;
  34. if(parata_cnt>=no_of_parata)
  35. break;
  36. visit[top]++;
  37. t[top]=t[top]+visit[top]*top;
  38. pq.push(make_pair(t[top],top));
  39. }
  40. if(no_of_parata==0)
  41. ans--;
  42. printf("%lld\n",ans);
  43. }
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0s 2824KB
stdin
3
10
4 1 2 3 4
8
1 1
8
8 1 1 1 1 1 1 1 1
stdout
12
36
1