Mai intai trebuie sa te autentifici.
Cod sursa(job #1244554)
| Utilizator | Data | 17 octombrie 2014 19:26:21 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 65 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.95 kb |
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cmath>
#include <fstream>
#include <cstring>
#include <bitset>
#include <stack>
#include <vector>
#include <map>
#include <set>
#define per pair<int,int>
#define x first
#define y second
#define DN 100013
#define DM 2000
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[DN],minn[DN],n,sz;
/// minn[ i ] = cel mai mic terment cu care se poate termina un subsir de lungime i
void solve(){
memset(minn,127,sizeof(minn)); /// INF
minn[0] = 0; /// sa putem continua cu orie sir
f>>n;
for(int i=1;i<=n;++i){
f>>v[i];
for(int j = sz ; j >= 0 ; --j)
if(v[i] > minn[j]){
minn[j+1] = min(minn[j+1],v[i]);
sz = max(sz,j+1);
break;
}
}
g<<sz<<"\n";
for(int i=1;i<=sz;++i)
g<<minn[i]<<" ";
}
int main()
{
solve();
return 0;
}
