Cod sursa(job #2439949)

Utilizator Ionut28Porumb Palincas Ionut Ionut28 Data 17 iulie 2019 11:44:27
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.92 kb

#include <bits/stdc++.h>

using namespace std;
ifstream fin("roata.in");
ofstream fout("roata.out");
const int nmax = 100001;
long long n, v[nmax], o[nmax], a[nmax];
long long suma;
bool ok = false;
long long p;
void read()
{
    fin >> n;
    fin >> p;
    for(int i = 1; i <= p; ++i)
    {
        fin >> v[i];
        suma += v[i];
        o[i] = i;
        a[i] = v[i];
    }
}
void solve()
{
    fout << suma << "\n";
    if(n >= p)
    {
        int rez, poz = 0, minim = 200005;
       for(int i = 1; i <= p; ++i)
       {
           poz = 0, minim = 200005;
           for(int j = 1; j <= p; ++j)
           {
               if(a[j] < minim && a[j] != -1)
               {
                   minim = a[j];
                   poz = j;
               }
           }
           fout << poz << " ";
           a[poz] = -1;
           rez = poz;
       }
       fout << "\n" << rez;
    }
    else
    {

        for(int i = n + 1; i <= p; ++i)
        {
            int minim = 200005, poz = 0;
            for(int j = 1; j <= n; ++j)
            {
                if(a[j] < minim)
                {
                    minim = a[j];
                    poz = j;
                }
            }
            fout << o[poz] << " ";
            for(int j = 1; j <= n; ++j)
                a[j] -= minim;
            a[poz] = v[i];
            o[poz] = o[i];
        }
       int rez, poz = 0, minim = 200005;
       for(int i = 1; i <= n; ++i)
       {
           poz = 0, minim = 200005;
           for(int j = 1; j <= n; ++j)
           {
               if(a[j] < minim && a[j] != -1)
               {
                   minim = a[j];
                   poz = j;
               }
           }
           fout << o[poz] << " ";
           a[poz] = -1;
           rez = poz;
       }
       fout << "\n" << rez;
    }
}
int main()
{
    read();
    solve();
    return 0;
}