Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("seism.in");
- ofstream cout("seism.out");
- int v[100000];
- int main()
- {
- int cer,n,i,stare,max1,cnt,cntd,j,i1,j1,start,sfarsit,start1,sfarsit1;
- cin>>cer>>n;
- ///citire
- for(i=0;i<n;i++)
- cin>>v[i];
- stare=max1=cnt=0;
- if(cer==1){
- for(i=1;i<n-1;i++){
- if(stare==0){
- if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
- stare=1;
- }else{
- if(v[i]==1){
- cnt++;
- }else{
- if(i+1<n && v[i+1]==0){
- if(cnt>max1)
- max1=cnt;
- }
- cnt=stare=0;
- }
- }
- }
- cout<<max1;
- }else if(cer==2){
- cntd=0;
- for(i=1;i<n-1;i++){
- if(stare==0){
- if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
- stare=1;
- }else{
- if(v[i]==1){
- cnt++;
- }else{
- if(v[i+1]==0)
- cntd++;
- cnt=stare=0;
- }
- }
- }
- cout<<cntd;
- }else{
- ///gasim max daca nu facem modificare
- for(i=1;i<n-1;i++){
- if(stare==0){
- if(v[i]==0 && v[i-1]==0 && v[i+1]==1)
- stare=1;
- }else{
- if(v[i]==1){
- cnt++;
- }else{
- if(i+1<n && v[i+1]==0){
- if(cnt>max1)
- max1=cnt;
- }
- cnt=stare=0;
- }
- }
- }
- start=0;
- while( start<n && v[start]==1)
- start++;
- while(start<n){
- ///gasesc sfarsit
- sfarsit=start;
- while(sfarsit<n && v[sfarsit]==0)
- sfarsit++;
- sfarsit--;
- ///gasim extreme
- start1=start-1;
- while(start1>1 && v[start1]==1 )
- start1--;
- start1++;
- sfarsit1=sfarsit+1;
- while(sfarsit1<n-2 && v[sfarsit1]==1 )
- sfarsit1++;
- sfarsit1--;
- ///presupun ca nu se poate decat cu ambele capete
- if(sfarsit-start-3>max1)
- max1=sfarsit-start-3;
- ///presupunem ca pastram doar capatul din dreapta
- if(v[start1-1]==0 && v[start1-2]==0){
- if(sfarsit-start1-1>max1)
- max1=sfarsit-start1-1;
- }
- ///presupunem ca pastram doar capatul stanga
- if(v[sfarsit1+1]==0 && v[sfarsit+2]==0){
- if(sfarsit1-start-1>max1)
- max1=sfarsit1-start-1;
- }
- ///presupunem ca nu pastram nici un colt
- if(v[sfarsit1+1]==0 && v[sfarsit+2]==0 && v[start1-1]==0 && v[start1-2]==0){
- if(sfarsit1-start1+1>max1)
- max1=sfarsit1-start1+1;
- }
- ///gasesc inceput
- start=sfarsit+1;
- while( start<n && v[start]==1)
- start++;
- }
- cout<<max1<<" ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement