Submission #3231650
Source Code Expand
#include <cstdio>
#include <cctype>
#include <cstring>
//User's Lib
#include <array>
#include <queue>
#include <algorithm>
using namespace std;
char buf[11111111], *pc = buf;
struct Main_Guard{
Main_Guard(){
fread(buf, 1, 11111111, stdin);
}
Main_Guard(const char *ins){
freopen(ins, "r", stdin);
fread(buf, 1, 11111111, stdin);
}
Main_Guard(const char *ins, const char *ous){
freopen(ins, "r", stdin);
freopen(ous, "w", stdout);
fread(buf, 1, 11111111, stdin);
}
~ Main_Guard(){
fclose(stdin), fclose(stdout);
}
};
static inline int read(){
int num = 0;
char c, sf = 1;
while(isspace(c = *pc++));
if(c == 45) sf = -1, c = *pc ++;
while(num = num * 10 + c - 48, isdigit(c = *pc++));
return num * sf;
}
namespace LKF{
template <typename T>
extern inline T abs(T tar){
return tar < 0 ? -tar : tar;
}
template <typename T>
extern inline void swap(T &a, T &b){
T t = a;
a = b;
b = t;
}
template <typename T>
extern inline void upmax(T &x, const T &y){
if(x < y) x = y;
}
template <typename T>
extern inline void upmin(T &x, const T &y){
if(x > y) x = y;
}
template <typename T>
extern inline T max(T a, T b){
return a > b ? a : b;
}
template <typename T>
extern inline T min(T a, T b){
return a < b ? a : b;
}
}
//Source Code
const int MAXN = 101010;
int x, y, z, n;
struct Data{
int a, b, c;
Data(){}
Data(const int &_a, const int &_b, const int &_c) : a(_a), b(_b), c(_c) {}
inline bool operator < (const Data &tar) const {
return a - b > tar.a - tar.b;
}
}num[MAXN];
template<typename _Tp, typename _Sequence = vector<_Tp>,
typename _Compare = less<typename _Sequence::value_type> >
inline void clear(priority_queue<_Tp, _Sequence, _Compare> &tar){
priority_queue<_Tp, _Sequence, _Compare> tmp;
swap(tmp, tar);
}
long long dp[MAXN];
int main(){
Main_Guard main_guard;
n = (x = read()) + (y = read()) + (z = read());
long long sumc = 0, sum = 0, ans = 0;
for(int i = 1; i <= n; i++){
num[i].a = read(), num[i].b = read(), num[i].c = read();
sumc += num[i].c;
}
sort(num + 1, num + 1 + n);
priority_queue<int, vector<int>, greater<int> > pq;
for(int i = 1; i <= x; i++){
sum += num[i].a - num[i].c;
pq.push(num[i].a - num[i].c);
}
for(int i = x + 1; i <= n - y + 1; i++){
dp[i] = sum;
sum += num[i].a - num[i].c;
pq.push(num[i].a - num[i].c);
sum -= pq.top();
pq.pop();
}
clear(pq);
sum = 0;
for(int i = n; i >= n - y + 1; i--){
sum += num[i].b - num[i].c;
pq.push(num[i].b - num[i].c);
}
for(int i = n - y; i >= x; i--){
LKF::upmax(ans, sumc + dp[i + 1] + sum);
sum += num[i].b - num[i].c;
pq.push(num[i].b - num[i].c);
sum -= pq.top();
pq.pop();
}
printf("%lld\n", ans);
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Coins |
User |
luogu_bot3 |
Language |
C++14 (GCC 5.4.1) |
Score |
800 |
Code Size |
3026 Byte |
Status |
AC |
Exec Time |
22 ms |
Memory |
6396 KB |
Compile Error
./Main.cpp: In constructor ‘Main_Guard::Main_Guard()’:
./Main.cpp:17:33: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 11111111, stdin);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
800 / 800 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
1 ms |
256 KB |
sample_02.txt |
AC |
1 ms |
256 KB |
sample_03.txt |
AC |
1 ms |
256 KB |
subtask_1_01.txt |
AC |
1 ms |
256 KB |
subtask_1_02.txt |
AC |
4 ms |
2688 KB |
subtask_1_03.txt |
AC |
4 ms |
2944 KB |
subtask_1_04.txt |
AC |
10 ms |
3328 KB |
subtask_1_05.txt |
AC |
13 ms |
3456 KB |
subtask_1_06.txt |
AC |
16 ms |
5784 KB |
subtask_1_07.txt |
AC |
5 ms |
2816 KB |
subtask_1_08.txt |
AC |
18 ms |
3968 KB |
subtask_1_09.txt |
AC |
4 ms |
2816 KB |
subtask_1_10.txt |
AC |
13 ms |
3604 KB |
subtask_1_11.txt |
AC |
17 ms |
6268 KB |
subtask_1_12.txt |
AC |
9 ms |
6040 KB |
subtask_1_13.txt |
AC |
17 ms |
6268 KB |
subtask_1_14.txt |
AC |
22 ms |
6204 KB |
subtask_1_15.txt |
AC |
21 ms |
6264 KB |
subtask_1_16.txt |
AC |
18 ms |
6396 KB |
subtask_1_17.txt |
AC |
19 ms |
6268 KB |
subtask_1_18.txt |
AC |
22 ms |
6272 KB |
subtask_1_19.txt |
AC |
22 ms |
6332 KB |
subtask_1_20.txt |
AC |
18 ms |
6032 KB |
subtask_1_21.txt |
AC |
11 ms |
6268 KB |
subtask_1_22.txt |
AC |
16 ms |
6100 KB |
subtask_1_23.txt |
AC |
20 ms |
6268 KB |
subtask_1_24.txt |
AC |
21 ms |
6264 KB |
subtask_1_25.txt |
AC |
17 ms |
6268 KB |
subtask_1_26.txt |
AC |
18 ms |
6268 KB |
subtask_1_27.txt |
AC |
21 ms |
6268 KB |
subtask_1_28.txt |
AC |
21 ms |
6272 KB |
subtask_1_29.txt |
AC |
1 ms |
256 KB |