Cod sursa(job #1560003)

Utilizator geni950814Geni Geni geni950814 Data 1 ianuarie 2016 13:16:28
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include <deque>
#include <iostream>

using namespace std;

int N, V[100000];
int main() {
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);

    scanf("%d", &N);

    deque<int> dq;

    dq.push_back(0);
    
    int diff = 0;
    int elem;
    for(int i = 0; i < N; i++) {
        scanf("%d", &elem);
        while(i > 0 && V[i-1] == elem) {
            scanf("%d", &elem);
            N--;
        }
        V[i] = elem;
        if(i > 0 && V[i-1] > V[i]) {
            if(dq.size() == 2) {
                if((i-dq[1]) > diff) {
                    //cout << "popping out: " << dq.front() << endl;
                    dq.pop_front();
                    //cout << "pushing in: " << i << endl;
                    dq.push_back(i);
                    diff = dq[1] - dq[0];
                }
            } else {
                dq.push_back(i);                    
                //cout << "pushing in: " << i << endl;
                diff = dq[1] - dq[0];
            }
        }
    }
    
    printf("%d", diff+1);
    cout << endl;
    for(int i = dq[0]; i < dq[1]; i++) {
        printf("%d", V[i]);
        printf("%c", ' ');
    }
    return 0;
}