Cod sursa(job #1987295)

Utilizator AlexAndrei11Mintas Alex Andrei AlexAndrei11 Data 30 mai 2017 10:25:31
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.94 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int n,aux,baza,a[1000],i,j;
    bool ok=false;

    ifstream fin("pietre.in");
    ofstream fout("pietre.out");

    cout<<"    Tu esti un Faraon si trebuie sa-ti pui sclavii sa construiasca o latura de piramida in forma de triunghi, formata "
          "din pietre de diferite dimensiuni si greutati.Piramida trebuie sa fie stabila, asa ca pietrele cu cea mai mare greutate"
          " vor sta la baza triunghiului.Tu trebuie doar sa le spui sclavilor cate pietre sa contina baza triunghiului."<<endl<<
          "    Fa un algoritm in care sa reusesti sa construiesti o latura de piramida. Urmeaza exemplul: "<<endl<<endl<<
          " Exemplu:"<<endl<<
          "Tu spui baza 3 iar in pietre.in se afla: 89 78 67 98 90 97 67 78 59 ... "<<endl<<
          "pietre.out:"<<endl<<
          "67"<<endl<<
          "78 89"<<endl<<
          "90 97 98"<<endl<<
          "(greutatile pietrelor vor fi date in fisierul pietre.in, ele vor fi incadrate intre 50 si 100 de kilograme)"<<endl<<endl<<
          "Pietre.in: greutatile pietrelor"<<endl<<
          "Pietre.out: latura de piramida asezata ca in exemplu"<<endl<<
          "Succes !"<<endl;
    cout<<"Numarul pietrelor de la baza este: ";
    cin>>baza;
    n=0;
    aux=baza;
    while (aux>=1)
    {
        n=n+aux;
        aux--;
    }
    for (i=1;i<=n;i++)
        fin>>a[i];
    while (ok==false)
    {
        ok=true;
        for (i=2;i<=n;i++)
            if (a[i-1]>a[i])
        {
            aux=a[i];
            a[i]=a[i-1];
            a[i-1]=aux;
            ok=false;
        }
    }
    fout<<a[1];
    fout<<endl;
    i=2;
    for (aux=2;aux<=baza;aux++)
        {
            for (j=1;j<=aux;j++)
            {
                fout<<a[i]<<" ";
                i++;
            }
            fout<<endl;
        }

    fin.close();
    fout.close();
    return 0;
}