Facebook
From Morose Cassowary, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 235
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int T[20000];
  4. int maks[2];
  5.  
  6.  
  7. int main(){
  8. int lel;
  9. int pin;
  10. cin>>lel;
  11. cin>>pin;
  12. for(int i=0;i<lel;i++){
  13.     cin>>T[i];
  14. }
  15. int lprze=0;
  16. while(lprze<2){
  17.     int przer=0;
  18.     int pak=pin;
  19.     int p=0;
  20.     int k=lel-1;
  21.     int x=p;
  22.  
  23.     int ooo=0;
  24.  
  25. while(p<k){
  26.         if(p>0&&T[p]>T[p-1]){//zwiekszenie pieniedzy na poczatku
  27.                 pak=pak+T[p]-T[p-1];
  28.             }
  29.  
  30.     while(pak>=0&&x<k){
  31.  
  32.             if(T[x]>=T[x+1]){//w dó³ za darmo
  33.                 x++;
  34.             }
  35.             else
  36.             if(pak+T[x]-T[x+1]>=0){
  37.                 pak=pak+T[x]-T[x+1];
  38.                 x++;
  39.             }
  40.  
  41.  
  42. if(T[x+1]-T[x]>pak){
  43.     if(T[x+1]-T[x]>pin){
  44.  
  45.         ooo=1;
  46.         break;
  47.     }
  48.     else
  49.         break;
  50. }
  51.     }
  52.  
  53.     if(maks[lprze]<x-p+1)maks[lprze]=x-p+1;
  54.     if(x==k) break;
  55.     if(ooo==0)
  56.         p++;
  57.     else{
  58.         ooo=0;
  59.         p=x+1;
  60.         x=x+1;
  61. }
  62. }
  63. reverse(T,T+lel);
  64. lprze++;
  65. }
  66.  
  67. cout<<max(maks[0],maks[1]);
  68.  
  69.  
  70. }