Cod sursa(job #1964030)
| Utilizator | Data | 12 aprilie 2017 23:47:34 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.36 kb |
#import<fstream>
#define F for
std::ifstream f("scmax.in");
std::ofstream g("scmax.out");
const int N=2e5;
int n,i,j,a[N],b[N],P[N],Z[N],S,D,k,M;
int main(){
F(f>>n,i=1;i<=n;){
f>>a[i],S=1,D=k;
while(S<=D){if(b[M=(S+D)/2]<a[i])S=M+1;else D=M-1;}
if (S>k)k++;
b[S]=a[i],P[i++]=S;}
F(i=n;i>=1&&k;i--)if(P[i]==k)Z[++j]=a[i],k--;
F(g<<j<<'\n';j;g<<Z[j--]<<" ");}
