Pagini recente » Cod sursa (job #2247900) | Cod sursa (job #1116300) | Cod sursa (job #1986458) | Cod sursa (job #2131301) | Cod sursa (job #1328597)
/// scmax
#include <iostream>
#include <fstream>
#define inf (1<<30)+100
#define NMax 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n;
int A[NMax];
int best[NMax];
void solve() {
for (int i=1;i<=n;i++) {
best[i] = inf;
}
best[0] = -1;
for (int i=1;i<=n;i++) {
int x = A[i];
int left = 0, right = i+1;
while (right-left-1) {
int mij = (left+right)/2;
if (best[mij] < x)
left = mij;
else
right = mij;
}
if (best[right] > x) {
best[right] = x;
}
}
int left = 0, right = n+1;
while (right-left-1) {
int mij = (left+right)/2;
if (best[mij] < inf)
left = mij;
else
right = mij;
}
g<<right<<'\n'; /// Primul raspuns
}
void read() {
f>>n;
for (int i=1;i<=n;i++)
f>>A[i];
}
int main() {
read();
solve();
f.close(); g.close();
return 0;
}