tanasaradu

Untitled

Feb 12th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin ("cool.in");
  4. ofstream fout ("cool.out");
  5. int a[5005] , n , k , op , lgmax , nrlgmax , frop1[1005];
  6. bitset < 1005 > fr;
  7. inline void OP1()
  8. {
  9. int mx , mn , x , nr;
  10. bool ok = true;
  11. mx = 0;
  12. mn = 1005;
  13. nr = 0;
  14. for(int i = 1 ; i <= k ; i++)
  15. {
  16. x = a[i];
  17. mx = max(mx , x);
  18. mn = min(mn , x);
  19. frop1[x]++;
  20. if(frop1[x] == 2)
  21. ok = false;
  22.  
  23. }
  24. if(ok == false)
  25. {
  26. for(int i = 1 ; i <= k ; i++)
  27. if(frop1[a[i]] == 1)
  28. nr++;
  29. fout << nr << "\n";
  30. }
  31. else if(mx - mn == (k - 1))
  32. fout << mx << "\n";
  33. }
  34. inline void OP2()
  35. {
  36. int mx , mn , x;
  37. bool ok;
  38. for(int i = 1 ; i <= n ; i++)
  39. {
  40. fr . reset();
  41. mx = 0;
  42. mn = 1005;
  43. ok = true;
  44. for(int j = i ; j <= n && ok == true ; j++)
  45. {
  46. x = a[j];
  47. if(fr[x] == 1)
  48. ok = false;
  49. fr[x] = 1;
  50. mx = max(mx , x);
  51. mn = min(mn , x);
  52. if(mx - mn == (j - i) && ok == true)
  53. {
  54. if(lgmax < j - i + 1)
  55. {
  56. lgmax = j - i + 1;
  57. nrlgmax = 1;
  58. }
  59. else if(lgmax == j - i + 1)
  60. nrlgmax++;
  61. }
  62. }
  63. }
  64. fout << lgmax << "\n" << nrlgmax << "\n";
  65. }
  66. int main()
  67. {
  68. fin >> op;
  69. fin >> n >> k;
  70. for(int i = 1 ; i <= n ; i++)
  71. fin >> a[i];
  72. if(op == 1)
  73. OP1();
  74. else
  75. OP2();
  76. fin.close();
  77. fout.close();
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment