roben_76's blog

By roben_76, 11 years ago, In English

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

`

include

include<stdio.h>

include<stdlib.h>

include

include

include

include

include<string.h>

include

define pb push_back

define limit 5000

define mp make_pair

define ff first.first

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

Full text and comments »

  • Vote: I like it
  • -20
  • Vote: I do not like it