Triathlon Problem Code: INOI1201 Solution C++

 #include <bits/stdc++.h>
using namespace std;
int main() {  
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int n;
  cin>>n;
  vector<pair<int,int> > a(n,pair<int,int>());
  for(int i=0;i<n;i++){
    int x,y,z;
    cin>>x>>y>>z;
    a[i]={x,y+z};
  }
  int ans=0;
  sort(a.begin(),a.end(),[](auto x,auto y){
    return x.second>y.second||(x.second==y.second&&x.first>y.first);
  });
  int t=a[0].first,carry=a[0].second;
  for(int i=1;i<n;i++){
    ans+=t;
    t=a[i].first;
    carry-=t;
    carry=max(carry,a[i].second);
  }
  ans+=t;
  ans+=max(0,carry);
  cout<<ans;
  return 0;
}

Comments