• Source
    1. #include <iostream>
    2. #include <algorithm>
    3. #define Nmax 1000000
    4. using namespace std;
    5.  
    6. struct data
    7. {
    8. int cs;
    9. int gia;
    10. };
    11.  
    12. int cmp (data a, data b)
    13. {
    14. if (a.gia>b.gia) return 0;
    15. else if (a.gia==b.gia)
    16. {
    17. if (a.cs>b.cs) return 0;
    18. }
    19. return 1;
    20. }
    21.  
    22. int cmp2 (data a, data b)
    23. {
    24. if (a.cs>b.cs) return 0;
    25. return 1;
    26. }
    27.  
    28. int cmp3 (data a, data b)
    29. {
    30. if (a.cs<b.cs) return 0;
    31. return 1;
    32. }
    33.  
    34. int main ()
    35. {
    36. int n, k1, k2;
    37. struct data arr[Nmax];
    38. int t=0;
    39. while (1)
    40. {
    41. cin>>n>>k1>>k2;
    42. if (n==0 && k1==0 && k2==0) break;
    43. t++;
    44. for (int i=0; i<n; i++)
    45. {
    46. cin>>arr[i].gia;
    47. arr[i].cs=i+1;
    48. }
    49. sort (arr, arr+n, cmp);
    50. sort (arr, arr+k1, cmp2);
    51. sort (arr+(n-k2), arr+n, cmp3);
    52. cout<<"Case "<<t<<endl;
    53. for (int i=0; i<k1; i++)
    54. {
    55. cout<<arr[i].cs<<" ";
    56. }
    57. cout<<endl;
    58. for (int i=n-k2; i<n; i++)
    59. {
    60. cout<<arr[i].cs<<" ";
    61. }
    62. cout<<endl;
    63. }
    64. return 0;
    65. }