Cod sursa(job #2278116)

Utilizator Horea_Mihai_SilaghiHorea Mihai Silaghi Horea_Mihai_Silaghi Data 7 noiembrie 2018 11:58:33
Problema Lapte Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 3.43 kb
#include <iostream>

using namespace std;
int n,c, a[105], b[105],la[105],lb[105],v[105],i,j,poza=1,pozb=1,ai[105],bi[105],auxi,aux,ok=-1;
int main()
{
    cin>>n>>c;
    for(i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
        ai[i]=i;
        bi[i]=i;
    }
    for(i=1;i<n;i++)
        for(j=1+i;j<=n;j++)
    {
        if(a[i]>a[j])
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            auxi=ai[i];
            ai[i]=ai[j];
            ai[j]=auxi;
        }
        if(a[i]==a[j]&&b[i]<b[j])
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            auxi=ai[i];
            ai[i]=ai[j];
            ai[j]=auxi;
        }
        if(b[i]>b[j])
        {
            aux=b[i];
            b[i]=b[j];
            b[j]=aux;
            auxi=bi[i];
            bi[i]=bi[j];
            bi[j]=auxi;
        }
        if(b[i]==b[j]&&a[i]<a[j])
        {
            aux=b[i];
            b[i]=b[j];
            b[j]=aux;
            auxi=bi[i];
            bi[i]=bi[j];
            bi[j]=auxi;
        }
    }
    for(i=1;i<=n;i++)
    {
        cout<<b[i]<<" "<<bi[i]<<endl;
    }
    while(poza<c&&pozb<c)
    {
        if(ok==1)
        {
            while(poza<=pozb)
            {
                while(v[ai[1]]+a[1]<=v[ai[2]]+a[2])
                {
                    la[poza]=ai[1];
                    poza++;
                    v[ai[1]]++;
                }
                i=2;
                while(v[ai[1]]+a[1]>=v[ai[i]]+a[i]&&i<n)
                    i++;
                auxi=ai[1];
                aux=a[1];
                for(j=1;j<i;j++)
                {
                    a[j]=a[j+1];
                    ai[j]=ai[j+1];
                }
                a[i]=aux;
                ai[i]=auxi;
                i=2;
                while(v[bi[1]]+b[1]>=v[bi[i]]+b[i]&&i<n)
                    i++;
                auxi=bi[1];
                aux=b[1];
                for(j=1;j<i;j++)
                {
                    b[j]=b[j+1];
                    bi[j]=bi[j+1];
                }
                b[i]=aux;
                bi[i]=auxi;
            }
            ok=-1;
        }
        else
        {
            while(pozb<=poza)
            {
                while(v[bi[1]]+b[1]<=v[bi[2]]+b[2])
                {
                    lb[pozb]=bi[1];
                    pozb++;
                    v[bi[1]]++;
                }

                i=2;
                while(v[bi[1]]+b[1]>=v[bi[i]]+b[i]&&i<n)
                    i++;
                auxi=bi[1];
                aux=b[1];
                for(j=1;j<i;j++)
                {
                    b[j]=b[j+1];
                    bi[j]=bi[j+1];
                }
                b[i]=aux;
                bi[i]=auxi;

                i=2;
                while(v[ai[1]]+a[1]>=v[ai[i]]+a[i]&&i<n)
                    i++;
                auxi=ai[1];
                aux=a[1];
                for(j=1;j<i;j++)
                {
                    a[j]=a[j+1];
                    ai[j]=ai[j+1];
                }
                a[i]=aux;
                ai[i]=auxi;
            }
            ok=1;
        }
    }
    for(i=1;i<=c;i++)
        cout<<la[i]<<" ";
    cout<<endl;
     for(i=1;i<=c;i++)
        cout<<lb[i]<<" ";
    cout<<endl<<endl;
    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
    return 0;
}