Submission #3231636
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++ (GCC 5.4.1) |
Score | 0 |
Code Size | 3156 Byte |
Status | CE |
Compile Error
In file included from /usr/include/c++/5/array:35:0, from ./Main.cpp:7: /usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support \ ^ ./Main.cpp:88:64: error: default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11 inline void clear(priority_queue<_Tp, _Sequence, _Compare> &tar){ ^ ./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); ^