Advertisement
a53

jungla

a53
Mar 24th, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #include <iostream>
  2. #define lim 1000005
  3. using namespace std;
  4. int v[lim],ans[lim],stiva[lim],st[lim],dr[lim];
  5.  
  6. int main()
  7. {
  8. int n,cerinta;
  9. cin>>cerinta;
  10. if(cerinta==1)
  11. { /// aflam brut cate elemente dinaintea lui v[i] sunt mai mici decat v[i]
  12. int q;
  13. cin>>n>>q;
  14. for(int i=1; i<=n; ++i)
  15. {
  16. int a;
  17. cin>>v[i];
  18. a=0;
  19. for(int j=i-1; j; --j)
  20. {
  21. if(v[j] < v[i]) ++a;
  22. }
  23. ans[i]=a;
  24. }
  25. for(int i=1; i<=q; ++i)
  26. {
  27. int nr;
  28. cin>>nr;
  29. cout<<ans[nr]<<'\n';
  30. }
  31. }
  32. else
  33. {
  34. int height=0,vf=0;
  35. /// height reprezinta valoarea maxima din vectorul v,iar vf reprezinta varful stivei
  36. cin>>n;
  37. int a;
  38. for(int i=1; i<=n; ++i)
  39. {
  40. cin>>a;
  41. v[i]=a;
  42. height=max(height,v[i]);
  43. while(vf && v[i] > v[stiva[vf]])
  44. {
  45. dr[stiva[vf]]=i;
  46. --vf;
  47. }
  48. stiva[++vf]=i;
  49. }
  50. for(int i=1; i<=vf; ++i)
  51. dr[stiva[i]]=n+1;
  52. vf=0;
  53. for(int i=n; i; --i)
  54. {
  55. while(vf&&v[i]>v[stiva[vf]])
  56. {
  57. st[stiva[vf]]=i;
  58. --vf;
  59. }
  60. stiva[++vf]=i;
  61. }
  62. long long s,maxs=0;
  63. for(int i=1; i<=n; ++i)
  64. {
  65. int leftlim=st[i]+1,rightlim=dr[i]-1;
  66. s=(rightlim-leftlim+1)*(height-v[i]);
  67. maxs=max(s,maxs);
  68. }
  69. cout<<maxs;
  70. }
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement