Cod sursa(job #1982217)

Utilizator DavidLDavid Lauran DavidL Data 17 mai 2017 21:56:27
Problema Interclasari Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define MAX 20000005
using namespace std;
ifstream fi("interclasari.in");
ofstream fo("interclasari.out");

vector <int> V;
vector <int> :: iterator it;
vector <int> :: iterator a_it;
vector <int> :: iterator b_it;
int k,n,x,i,j,st,dr,mij;

void interclasare(vector <int> a,int a_lung,vector <int> b,int b_lung,vector <int> &c)
{
    a_it=a.begin(),b_it=b.begin();
    while (a_it!=a.end()&&b_it!=b.end())
        if (*a_it<=*b_it)
            c.push_back(*a_it),a_it++;
        else
            c.push_back(*b_it),b_it++;

    while (a_it!=a.end())
         c.push_back(*a_it),a_it++;
    while (b_it!=b.end())
         c.push_back(*b_it),b_it++;
}

int main()
{
    fi>>k;
    for (i=1; i<=k; i++)
    {
        fi>>n;
        for (j=1; j<=n; j++)
        {
            fi>>x;
            ///cautam pozitia lui x in V
            if (V.empty())
                V.push_back(x);
            else if (V.size()==1)
            {
                if (x<V.front())
                    V.insert(V.begin(),x);
                else
                    V.insert(V.end(),x);
            }
            else
            {
                st=0,dr=V.size();
                while (dr-st>1)
                {
                    mij=(st+dr)/2;
                    it=V.begin()+mij;
                    if (x<*it)
                        dr=mij;
                    else
                        st=mij;
                }
                V.insert(V.begin()+st+1,x);
            }
        }
    }
    fo<<V.size()<<"\n";
    for (it=V.begin(); it!=V.end(); it++)
        fo<<*it<<" ";
    return 0;
}