#include #include typedef struct { int index, value; } Pair; int comparator(const void* a, const void* b) { Pair* A = (Pair*)a; Pair* B = (Pair*)b; if(A->value == B->value) return A->index - B->index; return B->value - A->value; } int main() { int N; scanf("%d",&N); Pair* pair_A = (Pair*)malloc(sizeof(Pair)*N); for(int i=0; i N ? M : N)); int size = 0; while(idxA < N && idxB < M) { int posA = pair_A[idxA].index, valA = pair_A[idxA].value; int posB = pair_B[idxB].index, valB = pair_B[idxB].value; if(valA == valB) { if(posA > limitA && posB > limitB) { subsequence[size++] = valA; idxA++; idxB++; limitA = posA; limitB = posB; } else if(posA <= limitA) idxA++; else idxB++; } else if(valA > valB) idxA++; else idxB++; } printf("%d\n",size); for(int i=0; i