Pagini recente » Cod sursa (job #664798) | Cod sursa (job #2676833)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
int n, v[5005], lung, p[5005];
int main(){
fin >> n;
for (int i = 1; i <= n; ++i){
fin >> v[i];
int st = 1, dr = lung, pos = -1;
while (st <= dr){
int mid = (st + dr) / 2;
if (v[p[mid]] > v[i]){
pos = mid;
dr = mid - 1;
}
else{
st = mid + 1;
}
}
if (pos == -1){
p[++lung] = i;
}
else{
p[pos] = i;
}
}
fout << lung << "\n";
for (int i = 1; i <= lung; ++i){
fout << p[i] << " ";
}
fin.close();
fout.close();
return 0;
}