Cod sursa(job #278339)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 12 martie 2009 11:30:53
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<algorithm>
#include<string.h>
#define NMAX 1000002

using namespace std;

int a[NMAX],n,nr;
int maxx[NMAX];
int minn[NMAX];

int max(int a,int b)
{
 if(a>b)
  return a;
  else return b;
}

int este(int pz)
{
  if(pz==imp)
   for(int i=pz+1;i<=(pz-1)*2;i++)
    minn[++nr]=a[i];
   else {nr-=2;
         minn[++nr]=a[i+1];
        }
  sort(minn+1,nr+1);
  if(minn[1]<a[pz]) return 0;
  return 1;
}

int main()
{
  freopen("compus.in","r",stdin);
  freopen("compus.out","w",stdout);
  scanf("%d",&n);
  int imp;
  if(n%2!=0)
     imp=n/2+1;
   else imp=n/2;
  for(int i=1;i<=n;i++)
    {scanf("%d ",&a[i]);
     if(i<=imp)
      maxx[i]=max(maxx[i-1],a[i]);
     }
  for(int i=imp;i>=1;i--)
   {
    if(maxx[i]<=a[i]&&este(i))
     {printf("%d\n",i*2-1);
	  return 0;
     }
   }
  return 0;
}