Cod sursa(job #2117174)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 28 ianuarie 2018 17:20:31
Problema Interclasari Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <cstdio>
using namespace std;
const int NMAX = 1000001;
int a[NMAX], b[NMAX],c[NMAX];
int main()
{
    FILE *fin, *fout;
    int k,n,i,j,l,pun;
    fin=fopen("interclasari.in","r");
    fout=fopen("interclasari.out","w");
    fscanf(fin,"%d\n",&k);
    l=0;
    for(int x=1;x<=k;x++){
        fscanf(fin,"%d",&n);
        for(i=1;i<=n;i++)
            fscanf(fin,"%d",&b[i]);
        i=j=1;
        pun=1;
        if(x%2==1){
            while(i<=l && j<=n){
                if(a[i]<b[j])
                    c[pun++]=a[i++];
                else
                    c[pun++]=b[j++];
            }
            while(i<=l)
                c[pun++]=a[i++];
            while(j<=n)
                c[pun++]=b[j++];
            l=pun-1;
        }
        else{
            while(i<=l && j<=n){
                if(c[i]<b[j])
                    a[pun++]=c[i++];
                else
                    a[pun++]=b[j++];
            }
            while(i<=l)
                a[pun++]=c[i++];
            while(j<=n)
                a[pun++]=b[j++];
            l=pun-1;
        }
    }
    fprintf(fout,"%d\n",l);
    if(k%2==0)
        for(i=1;i<=l;i++)
            fprintf(fout,"%d ",a[i]);
    else
        for(i=1;i<=l;i++)
            fprintf(fout,"%d ",c[i]);
    fclose(fin);
    fclose(fout);
    return 0;
}