Advertisement
Patrickmeme

Cuburi3

May 21st, 2023
975
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. ifstream cin("cuburi3.in");
  6. ofstream cout("cuburi3.out");
  7.  
  8. struct cub{
  9.     int lat,gre,dp,sum,vin,ind;
  10. }v[10000];
  11.  
  12. int rasp[10000];
  13.  
  14. bool cmp(cub a,cub b){
  15.     if(a.lat>b.lat)
  16.         return 1;
  17.     else if(b.lat<a.lat)
  18.         return 0;
  19.     else{
  20.         if(a.gre>b.gre)
  21.             return 1;
  22.         else
  23.             return 0;
  24.     }
  25. }
  26.  
  27. int main()
  28. {
  29.     int n,i,j,max1,nr,ci,l;
  30.     cin>>n;
  31.     for(i=0;i<n;i++){
  32.         cin>>v[i].lat>>v[i].gre;
  33.         v[i].ind=i+1;
  34.     }
  35.     sort(v,v+n,cmp);
  36.     v[0].dp=1;v[0].sum=v[0].lat;v[0].vin=-1;
  37.     for(i=1;i<n;i++){
  38.         max1=v[i].lat;nr=1;
  39.         for(j=i-1;j>=0;j--){
  40.             if(v[j].gre>=v[i].gre && v[j].sum>max1){
  41.                 max1=v[j].sum+v[i].lat;
  42.                 nr=v[j].dp+1;
  43.                 v[i].vin=j;
  44.             }
  45.         }
  46.         if(max1==v[i].lat)
  47.             v[i].vin=-1;
  48.         v[i].sum=max1;
  49.         v[i].dp=nr;
  50.     }
  51.     max1=ci=0;
  52.     for(i=n-1;i>=0;i--){
  53.         if(v[i].sum>max1){
  54.             max1=v[i].sum;
  55.             ci=i;
  56.         }
  57.     }
  58.     cout<<v[ci].dp<<" "<<max1<<"\n";
  59.     l=ci;
  60.     i=0;
  61.     while(l!=-1){
  62.         rasp[i]=v[l].ind;
  63.         i++;
  64.         l=v[l].vin;
  65.     }
  66.     i--;
  67.     while(i>=0){
  68.         cout<<rasp[i]<<"\n";
  69.         i--;
  70.     }
  71.  
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement