Cod sursa(job #449976)

Utilizator milijrCristian Militaru milijr Data 7 mai 2010 15:33:57
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include<fstream>
#include<iostream>
using namespace std;
int cautbin(unsigned int a[], unsigned int x, unsigned int n)
{
	unsigned int st=1,dr=n,mij;
	while(st<=dr)
	{
		mij=(st+dr)/2;
		if(a[mij]==x)
			return mij;
		if(a[mij]>x)
			dr=mij-1;
		else
			st=mij+1;
	}
	return 0;
}

int main()
{
	unsigned int bla,a[100000],n,i,op,nrop,x,j,poz;
	ifstream fin("hashuri.in");
	ofstream fout("hashuri.out");
	fin>>nrop;
	n=0;
	
	for(bla=1;bla<=nrop;bla++)
	{
		while(n==0)
		{
			fin>>op>>x;
			bla++;
			if(bla>nrop)
				return 0;
			if(op==3)
				fout<<"0"<<endl;
			if(op==1)
			{
				n++;
				a[1]=x;
				break;
			}
		}
		fin>>op>>x;
		if(op==1)
		{
			if(x>a[n])
			{
				a[n+1]=x;
				goto aa;
			}
			if(x<a[1])
			{
				for(i=n+1;i>1;i--)
					a[i]=a[i-1];
				a[1]=x;
				goto aa;
			}
			for(i=n;i>0;i--)
				if(x>=a[i])
				{
					for(j=n+1;j>i+1;j--)
						a[j]=a[j-1];
					a[i+1]=x;
					goto aa;
				}
			aa:;
			n++;
		}
		if(op==2)
		{
			poz=cautbin(a,x,n);
			if(poz)
			{
				for(i=poz;i<n;i++)
					a[i]=a[i+1];
				n--;
			}
		}
		if(op==3)
		{
			poz=cautbin(a,x,n);
			if(poz)
				fout<<"1"<<endl;
			else
				fout<<"0"<<endl;
		}
	}
	return 0;
}