Cod sursa(job #2228012)

Utilizator paul_danutDandelion paul_danut Data 2 august 2018 14:43:22
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>
#include <vector>
#include <limits>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

vector<int> maxIncreasingSubArray(const vector<int> input)
  {
    size_t maxNrOfElements = 0;
    int last = numeric_limits<int>::min();
    vector<int> outputCandidate;
    vector<int> output;

    //maybe this can be improved by not copying each time outputCandidate to output
    for(size_t i = 0 ; i< input.size(); ++i)
    {
        if(last > input[i])
        {
        outputCandidate.clear();
        }
        if (last != input[i])
        {
        outputCandidate.push_back(input[i]);
        }
        if (maxNrOfElements < outputCandidate.size() )
        {
        maxNrOfElements = outputCandidate.size();
        output = outputCandidate;
        }
        last = input[i];
    }

    return output;
  }

vector<int> input;
vector<int> output;
vector<int>::iterator it;
int x, n;

int main()
{
    f>>n;
    int x;

    for(int i=0; i<n; i++)
    {
        f>>x;
        input.push_back(x);
    }

    output = maxIncreasingSubArray(input);

    g<<output.size() << '\n';
    for(it = output.begin(); it!= output.end(); ++it)
    {
        g<<*it << ' ';
    }

    return 0;
}