Pagini recente » Cod sursa (job #3197637) | Cod sursa (job #534912) | Cod sursa (job #1887247) | Cod sursa (job #38962) | Cod sursa (job #49990)
Cod sursa(job #49990)
#include <stdio.h>
#define MAX 6000
int n, a[MAX], v[MAX];
int st, dr, mijl, L, last;
bool found;
int main()
{
FILE *fin = fopen("subsir2.in", "r");
fscanf(fin, "%d", &n);
for (int i = 0; i < n; ++i)
fscanf(fin, "%d", &a[i]);
fclose(fin);
L = 1;
v[0] = 0;
for (int i = 1; i < n; ++i)
{
if (a[i] > a[ v[L-1] ])
v[L++] = i;
else
{
st = 0;
dr = L-1;
while (st < dr)
{
mijl = (st + dr) >> 1;
if (a[i] < a[ v[mijl] ])
dr = mijl;
else
st = mijl+1;
}
if (a[ v[st-1] ] != a[i])
v[st] = i;
}
}
FILE *fout = fopen("subsir2.out", "w");
fprintf(fout, "%d\n", L);
for (int i = 0; i < L; ++i)
fprintf(fout, "%d ", v[i]+1);
fclose(fout);
return 0;
}