#include <stdio.h>
#include <stdlib.h>
#define maxn 1001
typedef struct{
int num;//老鼠的编号
int w,v;//w体重 v速度
}Mouse;
int cmp(const void *a,const void *b);
int print(int max_l);
int f[1001],p[1001];
Mouse mice[1001];
int main(void)
{
int i,j,max,max_l,index,n = 0;
while(scanf("%d%d",&mice[n].w,&mice[n].v) != EOF)
{
mice[n].num = n+1;
n++;
}
qsort(mice,n,sizeof(mice[0]),cmp);//体重按升序排序
for(i=0;i<n;i++)
{
f[i] = 1;
p[i] = -1;
}
max = f[0];
index = 0;
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
if(mice[i].v < mice[j].v && mice[i].w > mice[j].w && f[i] <= f[j])
{
f[i] = f[j] + 1;
p[i] = j;
}
}
if(max < f[i])
{
max = f[i];
max_l = i;
}
}
//for(i=0;i<n;i++)
//printf("%d. %d %d\n",mice[i].num,mice[i].w,mice[i].v);
printf("%d\n",max,max_l);
//printf("*%d*\n",mice[max_l].num);
print(max_l);
return 0;
}
int cmp(const void *a,const void *b)
{
Mouse *c = (Mouse *)a;
Mouse *d = (Mouse *)b;
if(c->w == d->w)
return c->v - d->v;
else
return c->w - d->w;
}
int print(int max_l)
{
if(p[max_l] != -1)
print(p[max_l]);
printf("%d\n",mice[max_l].num);
return;
}
HDU 1160
最新推荐文章于 2020-06-05 18:12:00 发布