同AC

struct node
{
    int x,y;
    bool operator<(const node& a)const
    {
        return x < a.x || (x == a.x && y < a.y);
    }
}a[55];
int n;
int dp[55];

int main()
{
while(scanf("%d",&n) != EOF)
    {
        for(int i = 0; i < n; i++)
            scanf("%d%d",&a[i].x,&a[i].y);
        sort(a,a+n);
        int ans = 0;
        dp[0] = 1;
        for(int i = 1; i < n; i++)
        {
            dp[i] = 1;
            for(int j = 0; j < i; j++)
                if(a[j].x < a[i].x && a[j].y < a[i].y)
                    dp[i] = max(dp[i],dp[j]+1);
            ans = max(ans,dp[i]);
        }
        printf("%d\n",ans);
    }
return 0;
}