Advertisement
Patrickmeme

Seism-86p

Feb 12th, 2023
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4. ifstream cin("seism.in");
  5. ofstream cout("seism.out");
  6. int v[100000];
  7. int main()
  8. {
  9.     int cer,n,i,stare,max1,cnt,cntd,j,i1,j1,start,sfarsit,start1,sfarsit1;
  10.     cin>>cer>>n;
  11.     ///citire
  12.     for(i=0;i<n;i++)
  13.         cin>>v[i];
  14.  
  15.     stare=max1=cnt=0;
  16.     if(cer==1){
  17.         for(i=1;i<n-1;i++){
  18.             if(stare==0){
  19.                 if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
  20.                     stare=1;
  21.             }else{
  22.                 if(v[i]==1){
  23.                     cnt++;
  24.                 }else{
  25.                     if(i+1<n && v[i+1]==0){
  26.                         if(cnt>max1)
  27.                             max1=cnt;
  28.                     }
  29.                     cnt=stare=0;
  30.                 }
  31.             }
  32.         }
  33.         cout<<max1;
  34.     }else if(cer==2){
  35.         cntd=0;
  36.         for(i=1;i<n-1;i++){
  37.             if(stare==0){
  38.                  if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
  39.                     stare=1;
  40.             }else{
  41.                 if(v[i]==1){
  42.                     cnt++;
  43.                 }else{
  44.                     if(v[i+1]==0)
  45.                             cntd++;
  46.                     cnt=stare=0;
  47.                 }
  48.             }
  49.         }
  50.         cout<<cntd;
  51.     }else{
  52.         ///gasim max daca nu facem modificare
  53.         for(i=1;i<n-1;i++){
  54.             if(stare==0){
  55.                 if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
  56.                     stare=1;
  57.             }else{
  58.                 if(v[i]==1){
  59.                     cnt++;
  60.                 }else{
  61.                     if(i+1<n && v[i+1]==0){
  62.                         if(cnt>max1)
  63.                             max1=cnt;
  64.                     }
  65.                     cnt=stare=0;
  66.                 }
  67.             }
  68.         }
  69.         start=0;
  70.         while( start<n && v[start]==1)
  71.             start++;
  72.         while(start<n){
  73.             ///gasesc sfarsit
  74.             sfarsit=start;
  75.             while(sfarsit<n && v[sfarsit]==0)
  76.                 sfarsit++;
  77.             sfarsit--;
  78.  
  79.             ///gasim extreme
  80.             start1=start-1;
  81.             while(start1>1 && v[start1]==1 )
  82.                 start1--;
  83.             start1++;
  84.  
  85.             sfarsit1=sfarsit+1;
  86.             while(sfarsit1<n-2 && v[sfarsit1]==1 )
  87.                 sfarsit1++;
  88.             sfarsit1--;
  89.             ///presupun ca nu se poate decat cu ambele capete
  90.             if(sfarsit-start-3>max1)
  91.                 max1=sfarsit-start-3;
  92.             ///presupunem ca pastram doar capatul din dreapta
  93.             if(v[start1-1]==0 && v[start1-2]==0){
  94.                 if(sfarsit-start1-1>max1)
  95.                     max1=sfarsit-start1-1;
  96.             }
  97.             ///presupunem ca pastram doar capatul stanga
  98.             if(v[sfarsit1+1]==0 && v[sfarsit+2]==0){
  99.                 if(sfarsit1-start-1>max1)
  100.                     max1=sfarsit1-start-1;
  101.             }
  102.             ///presupunem ca nu pastram nici un colt
  103.             if(v[sfarsit1+1]==0 && v[sfarsit+2]==0 && v[start1-1]==0 && v[start1-2]==0){
  104.                 if(sfarsit1-start1+1>max1)
  105.                     max1=sfarsit1-start1+1;
  106.             }
  107.             ///gasesc inceput
  108.             start=sfarsit+1;
  109.             while( start<n && v[start]==1)
  110.                 start++;
  111.         }
  112.         cout<<max1<<" ";
  113.     }
  114.     return 0;
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement