Advertisement
a53

rain

a53
Dec 16th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <vector>
  4. using namespace std;
  5. const int nMax = 1000000;
  6. long long int H[nMax];
  7. int max_dH[nMax]={0};
  8. vector <int> LR;
  9. vector <int> RL;
  10. int n, dn;
  11. int KL, KR;
  12. int countB=0;
  13. long long int volume=0;
  14. int L=-1, R=-1;
  15.  
  16. void input() {
  17. int j, dH;
  18. scanf("%d",&n);
  19. for(int i=0;i<n;i++)
  20. scanf("%d",&H[i]);
  21. scanf("%d",&dn);
  22. for (int i=0;i<dn;i++){
  23. scanf("%d %d",&j, &dH);
  24. max_dH[j]=dH;
  25. H[j]=H[j]+dH;
  26. }
  27. }
  28.  
  29. void scan() {
  30. KL=0;
  31. for (int i=1;i<n;i++)
  32. if (H[KL]<H[i]){
  33. L=KL;
  34. LR.push_back(KL);
  35. KL=i;
  36. }
  37. KR=n-1;
  38. for (int i=n-2;i>=KL;i--)
  39. if (H[KR]<H[i]){
  40. R=KR;
  41. RL.push_back(KR);
  42. KR=i;
  43. }
  44. }
  45.  
  46. void solve() {
  47. int HLmax, HRmax;
  48. if (LR.size()>0){
  49. LR.push_back(KL);
  50. for (int i=0;i<LR.size()-1;i++){
  51. if (max_dH[LR[i]]>0) countB++;
  52. volume = volume+(H[LR[i]]*(LR[i+1]-LR[i]));
  53. }
  54. }
  55. if (RL.size()>0){
  56. RL.push_back(KR);
  57. for (int i=0;i<RL.size()-1;i++){
  58. if (max_dH[RL[i]]>0) countB++;
  59. volume = volume+(H[RL[i]]*(RL[i]-RL[i+1]));
  60. }
  61. }
  62.  
  63. if (KL<KR){
  64. if(max_dH[KL]>0) countB++;
  65. if(max_dH[KR]>0) countB++;
  66. volume = volume+(H[KL]*(KR-KL));
  67. }
  68. else {
  69. if (L==-1)
  70. HLmax = 0;
  71. else
  72. HLmax = H[L];
  73. if (R==-1)
  74. HRmax = 0;
  75. else
  76. HRmax = H[R];
  77. if (HLmax != HRmax){
  78. if ((H[KL]-max_dH[KL]) < max(HRmax,HLmax)) countB++;
  79. }
  80. }
  81. }
  82.  
  83. int main()
  84. {
  85. input();
  86. scan();
  87. solve();
  88. printf ("%d %lld\n", countB, volume);
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement