### roben_76's blog

By roben_76, 8 years ago,

hello, would you tell me why my answer doesn't work?

please help me to know why doesn't work.

and you could see the submission here:4713882



# define fs first.second

using namespace std;

int main(){

int n,w,h;
cin>>n>>w>>h;
pair<pair<int,int>,int> a[n];
for(int i=0;i<n;i++){
cin>>a[i].first.first;
cin>>a[i].first.second;
a[i].second=i;

}
sort(a,a+n);

vector<int> v[n+1];
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[j].ff>a[i].ff && a[j].fs>a[i].fs){
v[i].pb(j);
}
}

}
for(int i=0;i<n;i++){
if(a[i].ff>w&&a[i].fs>h){
v[n].pb(i);
}
}
if(v[n].size()==0){
cout<<"0";
return 0;
}
int len[n+1],maxl=0;
for(int i=0;i<=n;i++){
len[i]=0;
}
for(int i=n-1;i>=0;i--){
maxl=-1;
if(v[i].size()==0){
len[i]=0;
}
else{
for(int j=0;j<v[i].size();j++){
if(len[v[i][j]]>maxl)
maxl=len[v[i][j]];
}
len[i]=maxl+1;
}
}
maxl=-1;
int maxi=0;
for(int i=0;i<v[n].size();i++){
if(len[v[n][i]]>maxl){
maxl=len[v[n][i]];
maxi=v[n][i];
}
}

len[n]=maxl+1;
int s[maxl+1];
for(int i=0;i<=maxl;i++){
s[i]=0;
}
while(maxl>=0){
s[len[n]-maxl-1]=maxi;
maxl--;
if(maxl>=0){
for(int i=0;i<v[maxi].size();i++){
if(v[v[maxi][i]].size()==maxl){
maxi=v[maxi][i];
break;
}
}
}
}
cout<<len[n]<<endl;
for(int i=0;i<len[n];i++){
cout<<a[s[i]].second+1<<" ";
}
cout<<endl;
return 0;


}

thanks

Read more »

• -20