Submission #587565

# Submission time Handle Problem Language Result Execution time Memory
587565 2022-07-02T05:34:31 Z Red_Inside Team Contest (JOI22_team) C++17
0 / 100
1 ms 340 KB
//
#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 -