Cod sursa(job #2777303)

Utilizator Victor280605Victor Dragos Victor280605 Data 22 septembrie 2021 20:48:37
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.59 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");

unsigned int sir[100005];
int sirm[100005];

int main()
{
    int n,i,m,x,y,st,dr,mij,maxi=-1,mini=100010;
    in >> n;
    for(i=1; i<=n; i++)
    {
        in >> sir[i];
    }
    sort(sir + 1, sir + n + 1);
    in >> m;
    for(i=1; i<=m; i++)
    {
        in >> x;
        in >> y;
        maxi = -1;
        mini = 100010;
        if(x==0)
        {
            st=1;
            dr=n;

            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(sir[mij]>y)
                {
                    dr=mij-1;
                }
                else if(sir[mij]<y)
                {
                    st=mij+1;

                }
                else if(sir[mij]==y)
                {
                    if(mij>maxi)
                    {
                        maxi=mij;
                    }
                    st=mij+1;
                }
            }
            sirm[i]=maxi;
        }
        if(x==1)
        {
            st=1;
            dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(sir[mij]>y)
                {
                    dr=mij-1;
                }
                else if(sir[mij]<y)
                {
                    st=mij+1;
                    if(mij>maxi)
                    {
                        maxi=mij;
                    }
                }
                else if(sir[mij]==y)
                {
                    if(mij>maxi)
                    {
                        maxi=mij;
                    }
                    st=mij+1;
                }
            }
            sirm[i]=maxi;
        }
        if(x==2)
        {
            st=1;
            dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(sir[mij]>y)
                {
                    dr=mij-1;
                    if(mij<mini)
                    {
                        mini=mij;
                    }
                }
                else if(sir[mij]<y)
                {
                    st=mij+1;
                }
                else if(sir[mij]==y)
                {
                    if(mij<mini)
                    {
                        mini=mij;
                    }
                    dr=mij-1;
                }
            }
            sirm[i] = mini;
        }
    }
    for(i=1;i<=m;i++){
        out << sirm[i] << "\n";
    }
}