Cod sursă (job #297383)

Utilizator avatar dandre1 Dragan Andrei dandre1 IP ascuns
Problemă Lanterna Compilator cpp | 3,56 kb
Rundă Arhiva de probleme Status evaluat
Dată 2 apr. 2017 21:15:59 Scor 10
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;



ifstream f("lanterna.in");
ofstream g("lanterna.out");
int n,m,a,b,t,q[100001],suma,v[100001],i;


void sterge (int l[],int k)
{
    for(int j=k+1; j<=l[0]; j++)
    {
        l[j-1]=l[j];
    }
    l[0]--;

}
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
        f>>v[i];
    v[0]=n;

    /*sort(v+1,v+n+1);
    if(n%2==1)
    {for(i=1;i<=n/2-1;i++)
      {
          suma=suma+v[i]+v[n-i+1];
      }
      suma+=v[n/2+1]+v[n/2+2];

    }
    else
    {
        for(i=1;i<=n/2-1;i++)
        {
            suma+=v[i]+v[n-1+1];
        }
        g<<suma<<" ";
        suma+=v[n/2+2];
    }
    g<<suma;
    */


    /*m=n;
    v[0]=n;
    while(v[0]!=0)
    {
     sort(v+1,v+v[0]+1);
     a=v[1];
     b=v[2];
     sterge(v,1);
     sterge(v,1);


     suma=suma+min(a,b);

     if(v[0]==0)break;
     else
     {
         q[0]++;q[q[0]]=a;
         q[0]++;q[q[0]]=b;

         sort(q+1,q+q[0]+1);
         a=q[1];
         sterge(q,1);


         v[0]++;
         v[v[0]]=a;
         suma+=v[a];
     }


    for(i=1;i<=v[0];i++)
     cout<<v[i]<<" ";
    cout<<'\n';

    for(i=1;i<=q[0];i++)
     cout<<q[i]<<" ";
    cout<<'\n';

    }

    g<<suma;
    */
    /* sort(v+1,v+v[0]+1);


     q[0]++;q[q[0]]=v[1];
     q[0]++;q[q[0]]=v[2];
     sterge(v,1);
     sterge(v,1);
     suma+=v[2];


     if(v[0]==0){g<<suma;return 0;}
     else if(v[0]==1){suma+=q[1];suma+=v[1];g<<suma;return 0;}


     a=q[1];
     sort(q+1,q+q[0]+1);
     suma+=a;
     v[0]++;v[v[0]]=a;
     sterge(q,1);

     sort(v+1,v+v[0]+1);

     a=v[v[0]];
     b=v[v[0]-1];

     suma+=min(a,b);
     q[0]++;q[q[0]]=a;
     q[0]++;q[q[0]]=b;

     sterge(v,v[0]);
     sterge(v,v[0]);


     if(v[0]==1){g<<suma+v[v[0]];return 0;}

     sort(q+1,q+q[0]+1);
     suma+=q[1];

     v[0]++;v[v[0]]=q[1];
     sterge(q,1);


     for(i=1;i<=v[0];i++)g<<v[i]<<" ";g<<'\n';
     for(i=1;i<=q[0];i++)g<<q[i]<<" ";g<<'\n';

    /* if(v[0]==0){g<<suma;return 0;}
     else
     {
         sort(q+1,q+q[0]+1);
         v[0]++;
         v[v[0]]=q[1];
         suma+=q[1];
         sterge(q,1);


        while(v[0]!=0)
        {

         if(v[0]==2){suma+=min(v[1],v[2]);break;}
         else
         {
             sort(v+1,v+v[0]+1);


         }
        }


     }


    */

    sort(v+1,v+v[0]+1);

    suma+=v[2];
    q[0]++;
    q[q[0]]=v[1];
    q[0]++;
    q[q[0]]=v[2];
    sterge(v,1);
    sterge(v,1);


    if(v[0]==0)
    {
        g<<suma;
        return 0;
    }



    a=q[1];
    sort(q+1,q+q[0]+1);
    suma+=a;
    v[0]++;
    v[v[0]]=a;
    sterge(q,1);



    while(v[0]!=0)
    {

      sort(v+1,v+v[0]+1);
      sort(q+1,q+q[0]+1);

      if(q[1]<v[v[0]]-1)
      {

       a=v[v[0]];
       b=v[v[0]-1];
       sterge(v,v[0]);
       sterge(v,v[0]);

       q[0]++;q[q[0]]=a;
       q[0]++;q[q[0]]=b;
       suma=suma+a;

       if(v[0]==0){g<<suma;return 0;}

       a=q[1];
       sterge(q,1);
       suma=suma+a;
       v[0]++;v[v[0]]=a;

      }

     else
     {
         a=v[1];
         b=v[v[0]];

         suma=suma+b;
         sterge(v,1);
         sterge(v,v[0]);

         q[0]++;q[q[0]]=a;
         q[0]++;q[q[0]]=b;

         if(v[0]==0){g<<suma;return 0;}

         sort(q+1,q+q[0]+1);
         a=q[1];
         sterge(q,1);
         suma+=a;

         v[0]++;v[v[0]]=a;

     }


    }

    return 0;
}