#include <iostream>
#include <algorithm>
#define MAX_N 100000
#define MAX_G 100000000000000
using namespace std;
struct val_and_poz {
int poz;
long long val;
bool operator < (const val_and_poz &a) const {
return val < a.val;
}
};
struct AIB {
long long aib[2 * MAX_N + 1];
void init() {
int i;
for ( i = 0; i <= 2 * MAX_N; i++ )
aib[i] = MAX_G + 1;
}
long long query( int i ) {
long long minG;
minG = MAX_G + 1;
while ( i > 0 ) {
minG = min( minG, aib[i] );
i -= (i & -i);
}
return minG;
}
void update( int i, long long x ) {
while ( i <= MAX_N ) {
aib[i] = min( aib[i], x );
i += (i & -i);
}
}
};
int x[MAX_N + 1], g[MAX_N + 1], d[MAX_N + 1], small[MAX_N + 1], big[MAX_N + 1];
long long sg[MAX_N + 1], sd[MAX_N + 1];
val_and_poz norm[2 * MAX_N];
AIB gold;
signed main() {
int n, a, i;
long long maxG;
cin >> n;
for ( i = 1; i <= n; i++ )
cin >> x[i] >> g[i] >> d[i];
for ( i = 1; i <= n; i++ ) {
sg[i] = sg[i - 1] + g[i];
sd[i] = sd[i - 1] + d[i];
}
for ( i = 0; i < n; i++ )
norm[i] = { i, sd[i] - x[i + 1] };
for ( i = 0; i < n; i++ )
norm[n + i] = { n + i, sd[i + 1] - x[i + 1] };
sort( norm, norm + 2 * n );
a = 1;
for ( i = 0; i < 2 * n; i++ ) {
if ( norm[i].poz < n )
small[norm[i].poz + 1] = a;
else
big[norm[i].poz - n + 1] = a;
if ( i < 2 * n - 1 && norm[i].val != norm[i + 1].val )
a++;
}
maxG = 0;
gold.init();
for ( i = 1; i <= n; i++ ) {
gold.update( small[i], sg[i - 1] );
maxG = max( maxG, sg[i] - gold.query( big[i] ) );
}
cout << maxG;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
1868 KB |
Output is correct |
2 |
Correct |
1 ms |
1868 KB |
Output is correct |
3 |
Correct |
1 ms |
1868 KB |
Output is correct |
4 |
Correct |
1 ms |
1868 KB |
Output is correct |
5 |
Correct |
1 ms |
1868 KB |
Output is correct |
6 |
Correct |
1 ms |
1868 KB |
Output is correct |
7 |
Correct |
1 ms |
1868 KB |
Output is correct |
8 |
Correct |
1 ms |
1868 KB |
Output is correct |
9 |
Correct |
1 ms |
1824 KB |
Output is correct |
10 |
Correct |
1 ms |
1868 KB |
Output is correct |
11 |
Correct |
1 ms |
1868 KB |
Output is correct |
12 |
Correct |
1 ms |
1868 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
1868 KB |
Output is correct |
2 |
Correct |
1 ms |
1868 KB |
Output is correct |
3 |
Correct |
1 ms |
1868 KB |
Output is correct |
4 |
Correct |
1 ms |
1868 KB |
Output is correct |
5 |
Correct |
1 ms |
1868 KB |
Output is correct |
6 |
Correct |
1 ms |
1868 KB |
Output is correct |
7 |
Correct |
1 ms |
1868 KB |
Output is correct |
8 |
Correct |
1 ms |
1868 KB |
Output is correct |
9 |
Correct |
1 ms |
1824 KB |
Output is correct |
10 |
Correct |
1 ms |
1868 KB |
Output is correct |
11 |
Correct |
1 ms |
1868 KB |
Output is correct |
12 |
Correct |
1 ms |
1868 KB |
Output is correct |
13 |
Correct |
1 ms |
1868 KB |
Output is correct |
14 |
Correct |
1 ms |
1868 KB |
Output is correct |
15 |
Correct |
4 ms |
1868 KB |
Output is correct |
16 |
Correct |
2 ms |
1868 KB |
Output is correct |
17 |
Correct |
5 ms |
1868 KB |
Output is correct |
18 |
Correct |
3 ms |
1868 KB |
Output is correct |
19 |
Correct |
2 ms |
1868 KB |
Output is correct |
20 |
Correct |
2 ms |
1868 KB |
Output is correct |
21 |
Correct |
3 ms |
1996 KB |
Output is correct |
22 |
Correct |
3 ms |
1996 KB |
Output is correct |
23 |
Correct |
14 ms |
2116 KB |
Output is correct |
24 |
Correct |
13 ms |
2144 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
1868 KB |
Output is correct |
2 |
Correct |
1 ms |
1868 KB |
Output is correct |
3 |
Correct |
1 ms |
1868 KB |
Output is correct |
4 |
Correct |
1 ms |
1868 KB |
Output is correct |
5 |
Correct |
1 ms |
1868 KB |
Output is correct |
6 |
Correct |
1 ms |
1868 KB |
Output is correct |
7 |
Correct |
1 ms |
1868 KB |
Output is correct |
8 |
Correct |
1 ms |
1868 KB |
Output is correct |
9 |
Correct |
1 ms |
1824 KB |
Output is correct |
10 |
Correct |
1 ms |
1868 KB |
Output is correct |
11 |
Correct |
1 ms |
1868 KB |
Output is correct |
12 |
Correct |
1 ms |
1868 KB |
Output is correct |
13 |
Correct |
1 ms |
1868 KB |
Output is correct |
14 |
Correct |
1 ms |
1868 KB |
Output is correct |
15 |
Correct |
4 ms |
1868 KB |
Output is correct |
16 |
Correct |
2 ms |
1868 KB |
Output is correct |
17 |
Correct |
5 ms |
1868 KB |
Output is correct |
18 |
Correct |
3 ms |
1868 KB |
Output is correct |
19 |
Correct |
2 ms |
1868 KB |
Output is correct |
20 |
Correct |
2 ms |
1868 KB |
Output is correct |
21 |
Correct |
3 ms |
1996 KB |
Output is correct |
22 |
Correct |
3 ms |
1996 KB |
Output is correct |
23 |
Correct |
14 ms |
2116 KB |
Output is correct |
24 |
Correct |
13 ms |
2144 KB |
Output is correct |
25 |
Correct |
5 ms |
2124 KB |
Output is correct |
26 |
Correct |
9 ms |
2488 KB |
Output is correct |
27 |
Correct |
13 ms |
2452 KB |
Output is correct |
28 |
Correct |
59 ms |
5128 KB |
Output is correct |
29 |
Correct |
89 ms |
5160 KB |
Output is correct |
30 |
Incorrect |
152 ms |
8488 KB |
Output isn't correct |
31 |
Halted |
0 ms |
0 KB |
- |