![:)](./images/smilies/icon_smile.gif)
Thanks a lot.
#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n,temp,maxx;
vector< pair<int,int> > blocks;
vector<int> dp;
struct sort_pred {
bool operator()(const std::pair<int,int> &left, const std::pair<int,int> &right) {
if(left.first == right.first) return left.second < right.second;
return left.first < right.first;
}
};
int main(){
scanf("%d",&n);
do{
maxx=0;
blocks.clear();
blocks.assign(n,make_pair(0,0));
dp.clear();
dp.assign(n,0);
for(int w=0;w<n;w++){
scanf("%d %d",&blocks[w].first,&blocks[w].second);
}
sort(blocks.begin(), blocks.end(), sort_pred());
dp[0] = 1;
for(int q=1;q<n;q++){
for(int w=0;w<q;w++){
if(blocks[q].first >= blocks[w].first && blocks[q].second >= blocks[w].second){
dp[q] = max(dp[q],dp[w]+1);
if(dp[q]>maxx)maxx=dp[q];
}
}
}
printf("%d\n",maxx);
scanf("%d",&n);
}while(n!=0);
printf("*\n");
return 0;
}