http://acm.hdu.edu.cn/showproblem.php?pid=1160
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct mice
{
int w,s,num,p;
};
bool cmp(mice a, mice b)
{
if(a.w==b.w)
return a.s>b.s;
return a.w<b.w;
}
int ans[1001];
mice a[1001];
int main()
{
int c,b,n=1;
while(scanf("%d %d",&c,&b)!=EOF)
{
a[n].p=0;a[n].num=n;a[n].w=c;a[n++].s=b;
}
for(int i=1; i<n; i++)
ans[i]=1;
sort(a+1,a+n,cmp);
for(int i=1; i<n; i++)
for(int j = 1; j<i; j++)
if(a[i].w>a[j].w&&a[i].s<a[j].s)
if(ans[i]<ans[j]+1)
{
ans[i]=ans[j]+1;
a[i].p=j;
}
int maxx=0;
int sign=0;
for(int i = 1; i<n; i++)
if(ans[i]>maxx)
{
maxx=ans[i];
sign=i;
}
cout<<maxx<<endl;
int count=0;
while(sign)
{
ans[count++]=a[sign].num;
sign=a[sign].p;
}
for(int i = count-1; i>=0; i--)
cout<<ans[i]<<endl;
}