Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. ifstream fin("maxp.in");
  5. ofstream fout("maxp.out");
  6. int a[200002] , st[200002] , n, stg[200002] , drp[200002] , alt[200002];
  7. void Construire()
  8. {
  9. int i , top , x;
  10. top = 0;
  11. a[0] = -1;
  12. st[0] = 0;
  13. for(i = 1; i <= n; i++)
  14. {
  15. x = a[i];
  16. while(a[st[top]] < x && top > 0)
  17. top--;
  18. stg[i] = i - st[top] - 1;
  19. st[++top] = i;
  20. }
  21.  
  22. a[n + 1] = -1;
  23. st[0] = n + 1;
  24. top = 0;
  25. for(i = n; i >= 1; i--)
  26. {
  27. x = a[i];
  28. while(a[st[top]] < x && top > 0)
  29. top--;
  30. drp[i] = st[top] - i - 1;
  31. st[++top] = i;
  32. }
  33. }
  34. int main()
  35. {
  36. int i , mx , nr , x;
  37. fin >> n;
  38. nr = 0;
  39. for(i = 1; i <= n; i++)
  40. fin >> a[i];
  41. Construire();
  42. mx = -1;
  43. for(i = 1; i <= n; i++)
  44. {
  45. x = (stg[i] + 1) * (drp[i] + 1);
  46. alt[i] = x;
  47. if(x > mx)mx = x;
  48. }
  49. for(i = 1; i <= n; i++)
  50. if(alt[i] == mx)nr++;
  51. fout << mx << "\n" << nr;
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement