Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- using namespace std;
- ifstream cin("cuburi3.in");
- ofstream cout("cuburi3.out");
- struct cub{
- int lat,gre,dp,sum,vin,ind;
- }v[10000];
- int rasp[10000];
- bool cmp(cub a,cub b){
- if(a.lat>b.lat)
- return 1;
- else if(b.lat<a.lat)
- return 0;
- else{
- if(a.gre>b.gre)
- return 1;
- else
- return 0;
- }
- }
- int main()
- {
- int n,i,j,max1,nr,ci,l;
- cin>>n;
- for(i=0;i<n;i++){
- cin>>v[i].lat>>v[i].gre;
- v[i].ind=i+1;
- }
- sort(v,v+n,cmp);
- v[0].dp=1;v[0].sum=v[0].lat;v[0].vin=-1;
- for(i=1;i<n;i++){
- max1=v[i].lat;nr=1;
- for(j=i-1;j>=0;j--){
- if(v[j].gre>=v[i].gre && v[j].sum>max1){
- max1=v[j].sum+v[i].lat;
- nr=v[j].dp+1;
- v[i].vin=j;
- }
- }
- if(max1==v[i].lat)
- v[i].vin=-1;
- v[i].sum=max1;
- v[i].dp=nr;
- }
- max1=ci=0;
- for(i=n-1;i>=0;i--){
- if(v[i].sum>max1){
- max1=v[i].sum;
- ci=i;
- }
- }
- cout<<v[ci].dp<<" "<<max1<<"\n";
- l=ci;
- i=0;
- while(l!=-1){
- rasp[i]=v[l].ind;
- i++;
- l=v[l].vin;
- }
- i--;
- while(i>=0){
- cout<<rasp[i]<<"\n";
- i--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement