Advertisement
a53

Skyline

a53
Mar 18th, 2019
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. #include <fstream>
  2. #define N 40001
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int n;
  8. ifstream f("skyline.in");
  9. f>>n;
  10. int H[N],L;
  11. long long sum[N];
  12. for(int i=1;i<=n;++i)
  13. {
  14. f>>H[i];
  15. f>>L;
  16. sum[i]=sum[i-1]+L;
  17. }
  18. f.close();
  19. int ST[N],D[N];
  20. ST[0]=n+1;
  21. int vf=0;
  22. for(int i=n;i>=1;--i)
  23. {
  24. while(vf>0&&H[i]<=H[ST[vf]])
  25. --vf;
  26. D[i]=ST[vf];
  27. ST[++vf]=i;
  28. }
  29. ST[0]=0;
  30. vf=0;
  31. int S[N];
  32. for(int i=0;i<=n;++i)
  33. {
  34. while(vf>0&&H[i]<=H[ST[vf]])
  35. --vf;
  36. S[i]=ST[vf];
  37. ST[++vf]=i;
  38. }
  39. long long MAX=0;
  40. for(int i=1;i<=n;++i)
  41. MAX=max(MAX,H[i]*(sum[D[i]-1]-sum[S[i]]));
  42. ofstream g("skyline.out");
  43. g<<MAX;
  44. g.close();
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement