#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast,unroll-loops")
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair <ll, ll> pii;
typedef pair <long double, pii> muchie;
typedef tree <ll, null_type, less_equal <ll>, rb_tree_tag, tree_order_statistics_node_update> OST;
const ll NMAX = 2001;
const ll INF = (1LL << 60);
const ll HALF = (1LL << 59);
const ll MOD = 1000000007;
const ll BLOCK = 318;
const ll base = 31;
ll n;
class All{
public:
struct Node{
ll st, dr, total;
ll ssm;
};
Node all[NMAX * 4];
Node combine(Node a, Node b){
Node rez;
rez.st = max({a.st, a.total + b.st, 0LL});
rez.dr = max({b.dr, b.total + a.dr, 0LL});
rez.total = a.total + b.total;
rez.ssm = max({a.ssm, b.ssm, a.dr + b.st, 0LL}); ///hmmm
return rez;
}
void update(ll node, ll st, ll dr, ll a, ll b){
if(st == dr){
//b = max(b, 0);
all[node] = {max(b, 0LL), max(0LL, b), b, max(0LL, b)};
return;
}
ll mid = (st + dr) / 2;
if(a <= mid){
update(node * 2, st, mid, a, b);
}else{
update(node * 2 + 1, mid + 1, dr, a, b);
}
all[node] = combine(all[node * 2], all[node * 2 + 1]);
}
Node best(){
return all[1];
}
}st;
struct poll{
ll x, y, val, idx;
};
poll v[NMAX], a[NMAX];
map <pii, ll> mp;
struct event{
pii p;
double timp;
};
vector <event> events;
bool cmp(event a, event b){
if(a.timp != b.timp)
return a.timp < b.timp;
if(a.p.second != b.p.second)
return a.p.second < b.p.second;
return a.p.first < b.p.first;
}
///De analizat
void swapElements(ll a, ll b){
st.update(1, 1, n, v[a].idx, v[b].val);
st.update(1, 1, n, v[b].idx, v[a].val);
swap(v[a].idx, v[b].idx);
}
///De analizat
bool cmpp(poll a, poll b){
if(a.x != b.x)
return a.x > b.x;
return a.y > b.y;
}
void compute(ll i, ll j){
events.push_back({{i, j}, (double)(v[i].y - v[j].y) / (double)(v[i].x - v[j].x)});
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll i;
cin >> n;
for(i = 1; i <= n; i++){
cin >> v[i].x >> v[i].y >> v[i].val;
}
sort(v + 1, v + n + 1, cmpp);
reverse(v + 1, v + n + 1);
for(i = 1; i <= n; i++){
for(ll j = i + 1; j <= n; j++){
compute(i, j);
}
}
for(i = 1; i <= n; i++){
st.update(1, 1, n, i, v[i].val);
v[i].idx = i;
}
sort(events.begin(), events.end(), cmp);
reverse(events.begin(), events.end());
ll maxim = st.best().ssm;
for(i = 0; i < events.size(); i++){
swapElements(events[i].p.first, events[i].p.second);
if(i < events.size() - 1 && events[i].timp == events[i + 1].timp){
continue;
}
maxim = max(maxim, st.best().ssm);
}
cout << maxim;
return 0;
}
Compilation message
bulldozer.cpp: In function 'int main()':
bulldozer.cpp:122:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<event>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
122 | for(i = 0; i < events.size(); i++){
| ~~^~~~~~~~~~~~~~~
bulldozer.cpp:124:14: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<event>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
124 | if(i < events.size() - 1 && events[i].timp == events[i + 1].timp){
| ~~^~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
588 KB |
Output is correct |
2 |
Correct |
2 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
588 KB |
Output is correct |
4 |
Correct |
2 ms |
588 KB |
Output is correct |
5 |
Correct |
2 ms |
588 KB |
Output is correct |
6 |
Correct |
2 ms |
588 KB |
Output is correct |
7 |
Correct |
2 ms |
588 KB |
Output is correct |
8 |
Correct |
2 ms |
588 KB |
Output is correct |
9 |
Correct |
2 ms |
588 KB |
Output is correct |
10 |
Correct |
2 ms |
588 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
0 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
0 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
588 KB |
Output is correct |
2 |
Correct |
2 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
588 KB |
Output is correct |
4 |
Correct |
2 ms |
588 KB |
Output is correct |
5 |
Correct |
2 ms |
588 KB |
Output is correct |
6 |
Correct |
2 ms |
588 KB |
Output is correct |
7 |
Correct |
2 ms |
588 KB |
Output is correct |
8 |
Correct |
2 ms |
588 KB |
Output is correct |
9 |
Correct |
2 ms |
588 KB |
Output is correct |
10 |
Correct |
2 ms |
588 KB |
Output is correct |
11 |
Correct |
0 ms |
204 KB |
Output is correct |
12 |
Correct |
0 ms |
204 KB |
Output is correct |
13 |
Correct |
0 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
0 ms |
204 KB |
Output is correct |
16 |
Correct |
0 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
0 ms |
204 KB |
Output is correct |
19 |
Correct |
0 ms |
204 KB |
Output is correct |
20 |
Correct |
0 ms |
204 KB |
Output is correct |
21 |
Correct |
2 ms |
588 KB |
Output is correct |
22 |
Correct |
2 ms |
588 KB |
Output is correct |
23 |
Correct |
2 ms |
588 KB |
Output is correct |
24 |
Correct |
4 ms |
588 KB |
Output is correct |
25 |
Correct |
2 ms |
588 KB |
Output is correct |
26 |
Correct |
2 ms |
588 KB |
Output is correct |
27 |
Correct |
2 ms |
588 KB |
Output is correct |
28 |
Correct |
3 ms |
588 KB |
Output is correct |
29 |
Correct |
3 ms |
588 KB |
Output is correct |
30 |
Correct |
2 ms |
588 KB |
Output is correct |
31 |
Correct |
2 ms |
588 KB |
Output is correct |
32 |
Correct |
2 ms |
588 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
588 KB |
Output is correct |
2 |
Correct |
2 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
588 KB |
Output is correct |
4 |
Correct |
2 ms |
588 KB |
Output is correct |
5 |
Correct |
2 ms |
588 KB |
Output is correct |
6 |
Correct |
2 ms |
588 KB |
Output is correct |
7 |
Correct |
2 ms |
588 KB |
Output is correct |
8 |
Correct |
2 ms |
588 KB |
Output is correct |
9 |
Correct |
2 ms |
588 KB |
Output is correct |
10 |
Correct |
2 ms |
588 KB |
Output is correct |
11 |
Correct |
0 ms |
204 KB |
Output is correct |
12 |
Correct |
0 ms |
204 KB |
Output is correct |
13 |
Correct |
0 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
0 ms |
204 KB |
Output is correct |
16 |
Correct |
0 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
0 ms |
204 KB |
Output is correct |
19 |
Correct |
0 ms |
204 KB |
Output is correct |
20 |
Correct |
0 ms |
204 KB |
Output is correct |
21 |
Correct |
2 ms |
588 KB |
Output is correct |
22 |
Correct |
2 ms |
588 KB |
Output is correct |
23 |
Correct |
2 ms |
588 KB |
Output is correct |
24 |
Correct |
4 ms |
588 KB |
Output is correct |
25 |
Correct |
2 ms |
588 KB |
Output is correct |
26 |
Correct |
2 ms |
588 KB |
Output is correct |
27 |
Correct |
2 ms |
588 KB |
Output is correct |
28 |
Correct |
3 ms |
588 KB |
Output is correct |
29 |
Correct |
3 ms |
588 KB |
Output is correct |
30 |
Correct |
2 ms |
588 KB |
Output is correct |
31 |
Correct |
2 ms |
588 KB |
Output is correct |
32 |
Correct |
2 ms |
588 KB |
Output is correct |
33 |
Correct |
1163 ms |
49708 KB |
Output is correct |
34 |
Correct |
1182 ms |
49660 KB |
Output is correct |
35 |
Correct |
1195 ms |
49664 KB |
Output is correct |
36 |
Correct |
1163 ms |
49656 KB |
Output is correct |
37 |
Correct |
1165 ms |
49680 KB |
Output is correct |
38 |
Correct |
1147 ms |
49708 KB |
Output is correct |
39 |
Correct |
1161 ms |
49680 KB |
Output is correct |
40 |
Correct |
1147 ms |
49656 KB |
Output is correct |
41 |
Correct |
1136 ms |
49716 KB |
Output is correct |
42 |
Correct |
1147 ms |
49716 KB |
Output is correct |
43 |
Correct |
1141 ms |
49656 KB |
Output is correct |
44 |
Correct |
1144 ms |
49756 KB |
Output is correct |
45 |
Correct |
1164 ms |
49740 KB |
Output is correct |
46 |
Correct |
1140 ms |
49680 KB |
Output is correct |
47 |
Correct |
1139 ms |
49684 KB |
Output is correct |
48 |
Correct |
1130 ms |
49680 KB |
Output is correct |
49 |
Correct |
1149 ms |
49656 KB |
Output is correct |
50 |
Correct |
1132 ms |
49716 KB |
Output is correct |
51 |
Correct |
1147 ms |
49644 KB |
Output is correct |
52 |
Correct |
1132 ms |
49808 KB |
Output is correct |
53 |
Correct |
1133 ms |
49680 KB |
Output is correct |
54 |
Correct |
1138 ms |
49676 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
588 KB |
Output is correct |
2 |
Correct |
2 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
588 KB |
Output is correct |
4 |
Correct |
2 ms |
588 KB |
Output is correct |
5 |
Correct |
2 ms |
588 KB |
Output is correct |
6 |
Correct |
2 ms |
588 KB |
Output is correct |
7 |
Correct |
2 ms |
588 KB |
Output is correct |
8 |
Correct |
2 ms |
588 KB |
Output is correct |
9 |
Correct |
2 ms |
588 KB |
Output is correct |
10 |
Correct |
2 ms |
588 KB |
Output is correct |
11 |
Correct |
0 ms |
204 KB |
Output is correct |
12 |
Correct |
0 ms |
204 KB |
Output is correct |
13 |
Correct |
0 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
0 ms |
204 KB |
Output is correct |
16 |
Correct |
0 ms |
204 KB |
Output is correct |
17 |
Correct |
0 ms |
204 KB |
Output is correct |
18 |
Correct |
0 ms |
204 KB |
Output is correct |
19 |
Correct |
0 ms |
204 KB |
Output is correct |
20 |
Correct |
0 ms |
204 KB |
Output is correct |
21 |
Correct |
2 ms |
588 KB |
Output is correct |
22 |
Correct |
2 ms |
588 KB |
Output is correct |
23 |
Correct |
2 ms |
588 KB |
Output is correct |
24 |
Correct |
4 ms |
588 KB |
Output is correct |
25 |
Correct |
2 ms |
588 KB |
Output is correct |
26 |
Correct |
2 ms |
588 KB |
Output is correct |
27 |
Correct |
2 ms |
588 KB |
Output is correct |
28 |
Correct |
3 ms |
588 KB |
Output is correct |
29 |
Correct |
3 ms |
588 KB |
Output is correct |
30 |
Correct |
2 ms |
588 KB |
Output is correct |
31 |
Correct |
2 ms |
588 KB |
Output is correct |
32 |
Correct |
2 ms |
588 KB |
Output is correct |
33 |
Correct |
1163 ms |
49708 KB |
Output is correct |
34 |
Correct |
1182 ms |
49660 KB |
Output is correct |
35 |
Correct |
1195 ms |
49664 KB |
Output is correct |
36 |
Correct |
1163 ms |
49656 KB |
Output is correct |
37 |
Correct |
1165 ms |
49680 KB |
Output is correct |
38 |
Correct |
1147 ms |
49708 KB |
Output is correct |
39 |
Correct |
1161 ms |
49680 KB |
Output is correct |
40 |
Correct |
1147 ms |
49656 KB |
Output is correct |
41 |
Correct |
1136 ms |
49716 KB |
Output is correct |
42 |
Correct |
1147 ms |
49716 KB |
Output is correct |
43 |
Correct |
1141 ms |
49656 KB |
Output is correct |
44 |
Correct |
1144 ms |
49756 KB |
Output is correct |
45 |
Correct |
1164 ms |
49740 KB |
Output is correct |
46 |
Correct |
1140 ms |
49680 KB |
Output is correct |
47 |
Correct |
1139 ms |
49684 KB |
Output is correct |
48 |
Correct |
1130 ms |
49680 KB |
Output is correct |
49 |
Correct |
1149 ms |
49656 KB |
Output is correct |
50 |
Correct |
1132 ms |
49716 KB |
Output is correct |
51 |
Correct |
1147 ms |
49644 KB |
Output is correct |
52 |
Correct |
1132 ms |
49808 KB |
Output is correct |
53 |
Correct |
1133 ms |
49680 KB |
Output is correct |
54 |
Correct |
1138 ms |
49676 KB |
Output is correct |
55 |
Correct |
1173 ms |
49768 KB |
Output is correct |
56 |
Correct |
1166 ms |
49700 KB |
Output is correct |
57 |
Correct |
1152 ms |
49680 KB |
Output is correct |
58 |
Correct |
1147 ms |
49692 KB |
Output is correct |
59 |
Correct |
1146 ms |
49692 KB |
Output is correct |
60 |
Correct |
1149 ms |
49676 KB |
Output is correct |
61 |
Correct |
1136 ms |
49680 KB |
Output is correct |
62 |
Correct |
1143 ms |
49680 KB |
Output is correct |
63 |
Correct |
1159 ms |
49700 KB |
Output is correct |
64 |
Correct |
1132 ms |
49828 KB |
Output is correct |
65 |
Incorrect |
1191 ms |
49680 KB |
Output isn't correct |
66 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
588 KB |
Output is correct |
2 |
Correct |
2 ms |
588 KB |
Output is correct |
3 |
Correct |
2 ms |
588 KB |
Output is correct |
4 |
Correct |
2 ms |
588 KB |
Output is correct |
5 |
Correct |
2 ms |
588 KB |
Output is correct |
6 |
Correct |
2 ms |
588 KB |
Output is correct |
7 |
Correct |
2 ms |
588 KB |
Output is correct |
8 |
Correct |
2 ms |
588 KB |
Output is correct |
9 |
Correct |
2 ms |
588 KB |
Output is correct |
10 |
Correct |
2 ms |
588 KB |
Output is correct |
11 |
Correct |
1 ms |
204 KB |
Output is correct |
12 |
Correct |
0 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
0 ms |
204 KB |
Output is correct |
16 |
Correct |
2 ms |
588 KB |
Output is correct |
17 |
Correct |
2 ms |
588 KB |
Output is correct |
18 |
Correct |
2 ms |
588 KB |
Output is correct |
19 |
Correct |
2 ms |
588 KB |
Output is correct |
20 |
Correct |
2 ms |
588 KB |
Output is correct |
21 |
Correct |
2 ms |
588 KB |
Output is correct |
22 |
Correct |
2 ms |
588 KB |
Output is correct |
23 |
Correct |
2 ms |
588 KB |
Output is correct |
24 |
Correct |
2 ms |
588 KB |
Output is correct |
25 |
Correct |
2 ms |
588 KB |
Output is correct |
26 |
Correct |
0 ms |
204 KB |
Output is correct |
27 |
Correct |
0 ms |
204 KB |
Output is correct |
28 |
Correct |
0 ms |
204 KB |
Output is correct |
29 |
Correct |
1 ms |
204 KB |
Output is correct |
30 |
Correct |
0 ms |
204 KB |
Output is correct |
31 |
Correct |
0 ms |
204 KB |
Output is correct |
32 |
Correct |
0 ms |
204 KB |
Output is correct |
33 |
Correct |
0 ms |
204 KB |
Output is correct |
34 |
Correct |
0 ms |
204 KB |
Output is correct |
35 |
Correct |
0 ms |
204 KB |
Output is correct |
36 |
Correct |
2 ms |
588 KB |
Output is correct |
37 |
Correct |
2 ms |
588 KB |
Output is correct |
38 |
Correct |
2 ms |
588 KB |
Output is correct |
39 |
Correct |
4 ms |
588 KB |
Output is correct |
40 |
Correct |
2 ms |
588 KB |
Output is correct |
41 |
Correct |
2 ms |
588 KB |
Output is correct |
42 |
Correct |
2 ms |
588 KB |
Output is correct |
43 |
Correct |
3 ms |
588 KB |
Output is correct |
44 |
Correct |
3 ms |
588 KB |
Output is correct |
45 |
Correct |
2 ms |
588 KB |
Output is correct |
46 |
Correct |
2 ms |
588 KB |
Output is correct |
47 |
Correct |
2 ms |
588 KB |
Output is correct |
48 |
Correct |
1163 ms |
49708 KB |
Output is correct |
49 |
Correct |
1182 ms |
49660 KB |
Output is correct |
50 |
Correct |
1195 ms |
49664 KB |
Output is correct |
51 |
Correct |
1163 ms |
49656 KB |
Output is correct |
52 |
Correct |
1165 ms |
49680 KB |
Output is correct |
53 |
Correct |
1147 ms |
49708 KB |
Output is correct |
54 |
Correct |
1161 ms |
49680 KB |
Output is correct |
55 |
Correct |
1147 ms |
49656 KB |
Output is correct |
56 |
Correct |
1136 ms |
49716 KB |
Output is correct |
57 |
Correct |
1147 ms |
49716 KB |
Output is correct |
58 |
Correct |
1141 ms |
49656 KB |
Output is correct |
59 |
Correct |
1144 ms |
49756 KB |
Output is correct |
60 |
Correct |
1164 ms |
49740 KB |
Output is correct |
61 |
Correct |
1140 ms |
49680 KB |
Output is correct |
62 |
Correct |
1139 ms |
49684 KB |
Output is correct |
63 |
Correct |
1130 ms |
49680 KB |
Output is correct |
64 |
Correct |
1149 ms |
49656 KB |
Output is correct |
65 |
Correct |
1132 ms |
49716 KB |
Output is correct |
66 |
Correct |
1147 ms |
49644 KB |
Output is correct |
67 |
Correct |
1132 ms |
49808 KB |
Output is correct |
68 |
Correct |
1133 ms |
49680 KB |
Output is correct |
69 |
Correct |
1138 ms |
49676 KB |
Output is correct |
70 |
Correct |
1173 ms |
49768 KB |
Output is correct |
71 |
Correct |
1166 ms |
49700 KB |
Output is correct |
72 |
Correct |
1152 ms |
49680 KB |
Output is correct |
73 |
Correct |
1147 ms |
49692 KB |
Output is correct |
74 |
Correct |
1146 ms |
49692 KB |
Output is correct |
75 |
Correct |
1149 ms |
49676 KB |
Output is correct |
76 |
Correct |
1136 ms |
49680 KB |
Output is correct |
77 |
Correct |
1143 ms |
49680 KB |
Output is correct |
78 |
Correct |
1159 ms |
49700 KB |
Output is correct |
79 |
Correct |
1132 ms |
49828 KB |
Output is correct |
80 |
Incorrect |
1191 ms |
49680 KB |
Output isn't correct |
81 |
Halted |
0 ms |
0 KB |
- |