64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include <string.h>
using namespace std;
struct mice
{
int w,v,num;
}per[1005];
bool cmp(mice a,mice b)
{
if(a.w==b.w)
return a.v>b.v;
return a.w<b.w;
}
int main()
{
int i=1;
while( scanf("%d%d",&per[i].w,&per[i].v)!=EOF)
per[i].num=i++;
;
sort(per+1,per+i,cmp);
int memory[1005] ,dp[1005],M=0,path;
for(int l=1;l<i;l++)
dp[l]=1;
for(int j=1;j<i;j++)
{
memory[j]=j;
for(int k=1;k<j;k++)
{
if(per[k].v>per[j].v&&per[k].w<per[k+1].w&&dp[k]+1>dp[j])
{
memory[j]=k;
dp[j]=dp[k]+1;
if(dp[j]>M)
{
M=dp[j];
path=j;
}
}
}
}
int ls[1006],x=0;
while(memory[path]!=path)
{
ls[x++]=path;
path=memory[path];
}
ls[x]=path;
cout<<x+1<<endl;
while(x>=0)
{
cout<<per[ls[x]].num<<endl;
x--;
}
return 0;
}