Cod sursa(job #3198825)

Utilizator elena.gaeGae Elena elena.gae Data 30 ianuarie 2024 17:27:59
Problema Secventa 2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
 #include <iostream>

using namespace std;
int v,n,a[30],i,j,nr,nrord,maxi,sum,s[30],total,pic,pozlinie;

int poz(int i, int nr)
{
    int r=0; /// randul pe care se afla nr curent
    while(r*(r+1)/2<i)
        r++;
    j=1;
    for(pozlinie=r*(r-1)/2+1;pozlinie!=i;pozlinie++)
        j++;

    if(nr==0)
    return r*(r+1)/2+j;/// r*(r+1)/2 ->randurile din fata si j elemente in fata
    else
    return r*(r+1)/2+j+1;
}

int verifica() /// verificam daca ultimul rand e plin
{
    int inc=n*(n+1)/2-n+1;
    int sf=n*(n+1)/2;
    for(int k=inc;k<=sf;k++)
        if(a[k]!=0)
        return 1;
    return 0;
}

int main()
{
    cin>>v>>n;
    int m=n*(n+1)/2;
    for(i=1;i<=n;i++)
    {
        sum=0;
        for(j=1;j<=i;j++)
        {
            cin>>a[++nr];
            sum+=a[nr];
        }
        total+=sum;
        if(sum>maxi)
        {
            maxi=sum;
            nrord=i;
        }
    }
    if(v==1)
    {
        cout<<nrord;
        return 0;
    }
    i=1;
    while(verifica())
    {
        while(a[i]==0) ///a[i] e plin
            {
                if(s[i]==0) ///urmeaza stanga
        {
            s[i]=1; /// next e la dreapta
            i=poz(i,0);
        }
            else
        {
            s[i]=0;
            i=poz(i,1);
        }
        if(i>m) break;
            }

        a[i]-=1;
        pic+=1;
        i=1;
    }
    cout<<pic<<" "<<pic-total;
    return 0;
}