fork(5) download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int N,M,K;
  8. cin>>N>>M>>K;
  9. int Ai;
  10. int occupied[M+1], nextrow[M+1], ans=0;
  11. for(int i=1; i<=M; i++)
  12. {
  13. nextrow[i]=i;
  14. occupied[i]=0;
  15. }
  16. bool flag=0;
  17. for(int i=0; i<N; i++)
  18. {
  19. cin>>Ai;
  20. if(!flag)
  21. {
  22. if(occupied[Ai]<K)
  23. {
  24. occupied[Ai]++;
  25. }
  26. else
  27. {
  28. if(occupied[nextrow[Ai]]<K)
  29. {
  30. occupied[nextrow[Ai]]++;
  31. ans++;
  32. }
  33. else
  34. {
  35. int start=(nextrow[Ai])%N+1;
  36. while(true)
  37. {
  38. if(start==Ai)
  39. {
  40. flag=1;
  41. ans++;
  42. break;
  43. }
  44. else
  45. {
  46. if(occupied[start]<K)
  47. {
  48. occupied[start]++;
  49. ans++;
  50. while(Ai!=start)
  51. {
  52. nextrow[Ai]=start;
  53. Ai=(Ai)%N+1;
  54. }
  55. break;
  56. }
  57. else
  58. {
  59. start=start%N+1;
  60. }
  61. }
  62. }
  63. }
  64. }
  65. }
  66. else
  67. {
  68. ans++;
  69. }
  70. }
  71. cout<<ans<<endl;
  72. return 0;
  73. }
Success #stdin #stdout 0s 15240KB
stdin
5 2 2

1 1 2 1 1
stdout
2