Cod sursa(job #695398)

Utilizator wizekidNeagu Gabriel wizekid Data 28 februarie 2012 12:17:42
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<fstream>
#include<list>
#define nmax 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m;
list<short> L[nmax];
int main()
	{f>>n;
	 int x; int tip;
	 for(int i=1;i<=n;i++) {f>>x; 
	                        L[x].push_back(i);
	                        }
	 f>>m;
	 int aux=0;
	 int t=0;
	 for(int i=1;i<=m;i++) 
		 {f>>tip>>x;
	      if(tip==0) {t=L[x].size(); 
		              if(t==0) g<<"-1"<<"\n";
                      else {aux=L[x].back(); g<<aux<<"\n";}
		             }
		  if(tip==1) {t=L[x].size();
		              if(t>=2) {aux=L[x].back(); g<<aux<<"\n";}
		              else {x=x-1; t=L[x].size();
					        if(t!=0) {aux=L[x].back(); g<<aux<<"\n";}
							else {while(t==0) {x--; t=L[x].size();}
							      aux=L[x].front(); g<<aux<<"\n";
							     }
					        }
					  }
		  if(tip==2) {t=L[x].size();
		              if(t>=2) {aux=L[x].front(); g<<aux<<"\n";}
		               else {x=x+1; t=L[x].size();
					        if(t!=0) {aux=L[x].front(); g<<aux<<"\n";}
							else {while(t==0) {x++; t=L[x].size();}
							      aux=L[x].back(); g<<aux<<"\n";
							     }
					        }
		             }
		 }
	 return 0;
	}