Cod sursa(job #798298)

Utilizator crisjonycristi crisjony Data 16 octombrie 2012 09:16:48
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include <stdio.h>
#include <cstdlib>

FILE *fin,*fout;

long i,n,v[100000],vec[100000],solutie,sol[100000],j,prec,ok,l;

int compare_ints(const void* a, const void* b)
{
    int* arg1 = (int*) a;
    int* arg2 = (int*) b;
    if( *arg1 < *arg2 ) return -1;
    else if( *arg1 == *arg2 ) return 0;
    else return 1;
}

int main()
{
    fin=fopen("scmax.in","r");
    fscanf(fin,"%ld",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(fin,"%ld",&v[i]);
        vec[i]=v[i];
    }
    /*for(i=1;i<n;i++)
    {
        for(j=i;j<=n;j++)
        {
            if(v[i]==v[j])
            {

            }
        }
    }*/
    std::qsort(v, n, sizeof(int), compare_ints);
    prec=0;
    for(i=1;i<=n;i++)
    {
        for(j=n;j>=1;j--)
        {
            if(v[i]==vec[j])
            {
                ok=1;
                for(l=1;l<=solutie;l++)
                {
                    if(sol[l]==v[i])
                    {
                        ok=0;
                    }
                }
                if((j>=prec)&&(ok==1))
                {
                    prec=j;
                    solutie++;
                    sol[solutie]=v[i];
                }
            }
        }
    }
    fout=fopen("scmax.out","w");
    fprintf(fout,"%ld\n",solutie);
    for(i=1;i<=solutie;i++)
    {
        fprintf(fout,"%ld ",sol[i]);
    }
    return 0;
}