Advertisement
mhdew

LA 6940

Jan 18th, 2019
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. /*Basic info
  2. Problem : LA6940
  3. Date : 19-01-19
  4. Author : Shesher
  5. */
  6.  
  7. #include<bits/stdc++.h>
  8.  
  9. using namespace std;
  10.  
  11. ///Template
  12. #define in1()    freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\input.txt", "r", stdin);
  13. #define out1()   freopen("C:\\Users\\SHESHER\\Rest\\Desktop\\MY COMPUTER\\Code\\Template\\output.txt", "w", stdout);
  14.  
  15.  
  16. //Data types
  17. #define lo      long
  18. #define ll      long long
  19. #define llu     unsigned long long
  20.  
  21. //loop
  22. #define f1(i,x,y)   for(int i=x;i<=y;i++)
  23.  
  24. //Constants
  25. #define MAX     100007
  26. #define MOD     10000007
  27. #define PI      acos(-1.0)
  28.  
  29. //STL
  30. #define vout(v)    for(int i=0;i<v.size();i++){cout<<v[i]; if(i==v.size()-1) cout<<endl; else cout<<" ";}
  31.  
  32. //Scan
  33. #define sc(x)    scanf("%d", &x)
  34. #define scl(x)   scanf("%lld", &x)
  35.  
  36. //Print
  37. #define pa(a,i,n)  for(int i=0;i<n;i++){ cout<<a[i]; if(i==n-1) cout<<endl; else cout<<" ";}
  38.  
  39. struct info
  40. {
  41.     int g, a, b;
  42.     int idx;
  43. };
  44.  
  45. bool cmp(struct info x, struct info y)
  46. {
  47.     if(x.a==y.a) return x.b<y.b;
  48.     else return x.a>y.a;
  49. }
  50.  
  51. double am[100100];
  52.  
  53. int main()
  54. {
  55.     // in1();
  56.     // out1();
  57.     int n;
  58.     double la, lb;
  59.     while(cin>>n>>la>>lb){
  60.         struct info ig[n+2];
  61.  
  62.         for(int i=0;i<n;i++){
  63.             cin>>ig[i].g>>ig[i].a>>ig[i].b;
  64.             ig[i].idx=i;
  65.         }
  66.  
  67.         double lla=la, llb=lb;
  68.  
  69.         memset(am,0,sizeof(am));
  70.  
  71.         sort(ig,ig+n,cmp);
  72.  
  73.         double hp=0, sd=0;
  74.         vector<double> ing;
  75.  
  76.         for(int i=0;i<n;i++){
  77.             if((ig[i].b*ig[i].g)<=lb){
  78.                 hp+=ig[i].a*ig[i].g;
  79.                 sd+=ig[i].b*ig[i].g;
  80.                 am[ig[i].idx]=ig[i].g;
  81.                 // ing.push_back(ig[i].g);
  82.                 lb-=(ig[i].b*ig[i].g);
  83.             }
  84.             else{
  85.                 // cout<<lb<<endl;
  86.                 double temp=(lb/ig[i].b);
  87.                 // cout<<temp<<endl;
  88.                 hp+=ig[i].a*temp;
  89.                 sd+=ig[i].b*temp;
  90.                 am[ig[i].idx]=temp;
  91.                 // ing.push_back(temp);
  92.                 break;
  93.             }
  94.         }
  95.  
  96.         if(hp<la) cout<<-1<<" "<<-1<<endl;
  97.         else{
  98.             cout<<hp<<" "<<sd<<endl;
  99.             for(int i=0;i<n;i++){
  100.                 cout<<am[i];
  101.                 if(i==n-1) cout<<endl;
  102.                 else cout<<" ";
  103.             }
  104.         }
  105.     }
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement