//
#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define o cout<<"BUG"<<endl;
#define FOR(i, j, n) for(int j = i; j < n; ++j)
#define forn(i, j, n) for(int j = i; j <= n; ++j)
#define nfor(i, j, n) for(int j = n; j >= i; --j)
#define sortv(vv) sort(vv.begin(), vv.end())
#define all(v) v.begin(), v.end()
#define ld long double
#define ull unsigned long long
using namespace std;
const int maxn=3e5+10,LOG=17, mod=1e9+7;
int block = 320, timer = 0;
const ld EPS = 1e-18;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define IOS ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define bt(i) (1 << (i))
#define int ll
const int inf=2e18;
#define y1 yy
#define prev pre
#define pii pair <int, int>
int n, a[maxn], b[maxn], c[maxn], ind[maxn], pref[maxn], ind2[maxn], ok[maxn];
bool cmp(int i, int j)
{
if(a[i] == a[j])
{
if(b[i] == b[j]) return c[i] < c[j];
else return b[i] < b[j];
}
else return a[i] < a[j];
}
void add(int I)
{
int A = a[I];
int B = b[I];
int C = c[I];
int pos;
forn(1, i, n)
{
if(ind2[i] == I)
{
pos = i;
}
}
ok[pos] = 1;
forn(pos, i, n)
{
pref[i] = max(pref[i], C);
}
}
int check(int A, int B, int C)
{
int ret = -inf;
int last = 0;
forn(1, i, n)
{
if(!ok[i]) continue;
if(b[ind2[last]] != b[i])
{
last = i;
}
if(last != 0 && pref[last - 1] > max(C, c[ind2[i]]) && b[ind2[i]] > B)
ret = max(ret, pref[last - 1] + A + b[ind2[i]]);
}
return ret;
}
bool cmp2(int i, int j)
{
if(b[i] == b[j])
{
return c[i] < c[j];
}
return b[i] < b[j];
}
main()
{
IOS
cin >> n;
forn(1, i, n)
{
cin >> a[i] >> b[i] >> c[i];
ind[i] = i;
ind2[i] = i;
}
sort(ind2 + 1, ind2 + 1 + n, cmp2);
forn(1, i, 4000) pref[i] = -inf;
sort(ind + 1, ind + 1 + n, cmp);
int ans = -inf;
forn(1, i, n)
{
int j = i;
while(a[ind[j+1]] == a[ind[i]])
{
ans = max(ans, check(a[ind[j]], b[ind[j]], c[ind[j]]));
++j;
}
ans = max(ans, check(a[ind[j]], b[ind[j]], c[ind[j]]));
forn(i, k, j)
{
add(ind[k]);
}
i = j;
}
if(ans < 0) cout << -1;
else
cout << ans;
}
Compilation message
team.cpp: In function 'void add(long long int)':
team.cpp:46:6: warning: unused variable 'A' [-Wunused-variable]
46 | int A = a[I];
| ^
team.cpp:47:6: warning: unused variable 'B' [-Wunused-variable]
47 | int B = b[I];
| ^
team.cpp: At global scope:
team.cpp:90:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
90 | main()
| ^~~~
team.cpp: In function 'void add(long long int)':
team.cpp:49:6: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
49 | int pos;
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |