Pagini recente » Cod sursa (job #752319) | Cod sursa (job #2611457) | Cod sursa (job #2592681) | Cod sursa (job #2581265) | Cod sursa (job #815175)
Cod sursa(job #815175)
#include<fstream>
using namespace std;
#define Nmax 100001
int V[Nmax], D[Nmax], poz[Nmax], N, maxlenght, maxpoz;
char *buff, bufflenght;
int get_number(int &k) {
int nr = 0;
while(!(buff[k] >= '0' && buff[k]<='9') && k<bufflenght)
++k;
while(buff[k]>='0' && buff[k]<='9' && k<bufflenght) {
nr = nr*10 + buff[k]-'0';
++k;
}
return nr;
}
int main() {
ifstream f;
f.open("scmax.in");
f.seekg(0, ios::end);
bufflenght = f.tellg();
buff = new char[bufflenght];
f.seekg(0, ios::beg);
f.read(buff, bufflenght);
f.close();
int i, j, k;
k = 0;
N = get_number(k);
for(i=1; i<=N; ++i) {
V[i] = get_number(k);
poz[i] = -1;
D[i] = 1;
}
maxlenght = 1;
maxpoz = N;
for(i=N-1; i>=1; --i)
for(j=i+1; j<=N; ++j)
if(V[i] < V[j] && D[i] < D[j] + 1) {
D[i] = D[j] + 1;
poz[i] = j;
if(D[i] > maxlenght) {
maxlenght = D[i];
maxpoz = i;
}
}
ofstream g("scmax.out");
g<<maxlenght<<"\n";
for(i=maxpoz; i!=-1; i=poz[i])
g<<V[i]<<" ";
g.close();
return 0;
}