Advertisement
a53

colier1

a53
Oct 30th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct meh
  4. {
  5. int col,grad;
  6.  
  7. };
  8. meh a[101];
  9. int st[100],k,m,n,ap[1001],sum[1001],Max,rez[1001];
  10.  
  11. bool sol(int k)
  12. {
  13. if(k==m)
  14. return 1;
  15. return 0;
  16. }
  17.  
  18. bool valid(int k)
  19. {
  20. if(a[st[k-1]].col==a[st[k]].col)
  21. return 0;
  22. sum[k]=sum[k-1]+a[st[k]].grad;
  23. return 1;
  24. }
  25.  
  26. void backit(int k)
  27. {
  28.  
  29. for(int i=1;i<=n;++i)
  30. {
  31. if(!ap[i])
  32. {
  33. ap[i]=1;
  34. st[k]=i;
  35. if(valid(k))
  36. if(sol(k))
  37. {
  38. if(a[st[k]].col!=a[st[1]].col)
  39. if(sum[k]>Max)
  40. {
  41. Max=sum[k];
  42. for(int j=1;j<=m;++j)
  43. rez[j]=st[j];
  44. }
  45. }
  46. else
  47. backit(k+1);
  48. ap[i]=0;
  49. }
  50. }
  51.  
  52. }
  53.  
  54. int main()
  55. {
  56. freopen("colier.in","r",stdin);
  57. freopen("colier.out","w",stdout);
  58. scanf("%d %d",&n,&m);
  59. for(int i=1;i<=n;++i)
  60. scanf("%d%d",&a[i].col,&a[i].grad);
  61. backit(1);
  62. for(int i=1;i<=m;++i)
  63. printf("%d ",rez[i]);
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement