Advertisement
nicuvlad76

Untitled

Feb 5th, 2023
626
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     ifstream in("roboti2.in");
  10.     ofstream out("roboti2.out");
  11.     long p[100000],a[100000],v,x,ok;
  12.     long n,i,max=1,s,d,ls=1,ns,nd;
  13.     int serie,cs,antdr;
  14.     in>>v>>n;
  15.     for(i=0;i<n;i++)
  16.       in>>p[i];
  17.     if(v==1) //cerinta 1
  18.      {
  19.       i=1; x=p[0]; ok=0;
  20.       while(i<n && ok<2)
  21.        {
  22.          if(p[i]>p[i-1])
  23.            ls++;
  24.          else
  25.           {
  26.             if(ls>max)
  27.               max=ls;
  28.             ls=1;
  29.           }
  30.          i++;
  31.          //ciclarea cautarii
  32.          if(i==n)
  33.            {
  34.              if(x>p[i-1])
  35.                { ls++; i=1; }
  36.              ok++; //numai inca o ciclare
  37.            }
  38.        }
  39.        out<<max;
  40.      }
  41.     else  //cerinta 2
  42.      {
  43.        sort(p, p+n);
  44.        //aranjare
  45.        a[0]=p[0];
  46.        s=0; d=n;
  47.        serie=0;
  48.        ns=0;nd=0;
  49.        antdr=0;
  50.        for(i=1;i<=n-1;i++)
  51.         {
  52.           //daca este cap de serie, adica primuldintr-o serie de nr. care se repeta
  53.           if(i<n-1 && p[i]==p[i+1] && p[i-1]!=p[i])
  54.             cs=1;
  55.           else
  56.             cs=0;
  57.           //daca am pus mai putini sau egal in st si dr sau
  58.           // este intr-o serie de egale sau
  59.           // cel dinaintealui l-am pus in dreapta dar nu a fost cap de serie
  60.           if(ns<=nd || serie || (antdr && !cs) )//merge stanga
  61.             {
  62.               s++;
  63.               a[s]=p[i];
  64.               ns++;
  65.               antdr=0;
  66.             }
  67.           else //merge dreapta
  68.             {
  69.               d--;
  70.               a[d]=p[i];
  71.               nd++;
  72.               antdr=1;
  73.             }
  74.           if(p[i]==p[i-1])
  75.             serie++;
  76.           else
  77.             serie=0;
  78.          }
  79.        for(i=0;i<n;i++)
  80.          out<<a[i]<<' ';
  81.      }
  82.     in.close();
  83.     out.close();
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement