Submission #556211

#TimeUsernameProblemLanguageResultExecution timeMemory
556211600MihneaTeam Contest (JOI22_team)C++17
37 / 100
2078 ms2288 KiB
#include <bits/stdc++.h>

bool home = 1;

using namespace std;

struct T {
  int x;
  int y;
  int z;
};

bool cmp_x_inv(T a,T b) {
  return a.x>b.x;
}

typedef long long ll;
const int N=150000+7;
const int INF=(int)1e9+7;
int n,zm[N];
T a[N];

signed main() {
#ifdef ONLINE_JUDGE
  home = 0;
#endif

  home=0;

  if (home) {
    freopen("I_am_iron_man", "r", stdin);
  }
  else {
    ios::sync_with_stdio(0); cin.tie(0);
  }

  cin>>n;
  for (int i=1;i<=n;i++) {
    cin>>a[i].x>>a[i].y>>a[i].z;
  }
  sort(a+1,a+n+1,cmp_x_inv);
  int print=-1;

  for (int ITER=0;ITER<2;ITER++) {
    int last=n;

    for (int i=n;i>=1;i--) {
      zm[i]=-INF;
      for (int j=i+1;j<=n;j++) {
        if (a[i].y>a[j].y) {
          zm[i]=max(zm[i],a[j].z);
        }
      }
    }

    while(last>=1){
      int first=last;
      while(first-1>=1&&a[first-1].x==a[first].x) first--;



      for (int i=first;i<=last;i++) {
        int best=-INF;
        int y=a[i].y,z=a[i].z;

        for (int j=last+1;j<=n;j++) {
          if (a[j].y<=y) continue;

          if (zm[j]>max(z,a[j].z)) {
            best=max(best,zm[j]+a[j].y);
          }
        }
        print=max(print,best+a[i].x);
      }

      last=first-1;
    }
    for (int i=1;i<=n;i++) swap(a[i].y,a[i].z);
  }

  cout<<print<<"\n";
}

Compilation message (stderr)

team.cpp: In function 'int main()':
team.cpp:31:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     freopen("I_am_iron_man", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...