Submission #223696

#TimeUsernameProblemLanguageResultExecution timeMemory
223696_7_7_Cake 3 (JOI19_cake3)C++14
24 / 100
181 ms1024 KiB
#include <bits/stdc++.h> #define int long long //#pragma GCC optimize("Ofast") //#pragma comment(linker, "/stack:200000000") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4") #define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout); #define forev(i, b, a) for(int i = (b); i >= (a); --i) #define forn(i, a, b) for(int i = (a); i <= (b); ++i) #define all(x) x.begin(), x.end() #define sz(s) (int)s.size() #define pb push_back #define ppb pop_back #define mp make_pair #define s second #define f first using namespace std; typedef pair < long long, long long > pll; typedef pair < int, int > pii; typedef unsigned long long ull; typedef vector < pii > vpii; typedef vector < int > vi; typedef long double ldb; typedef long long ll; typedef double db; const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 2e3 + 11; const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 333; const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9); const db eps = 1e-12, pi = 3.14159265359; const ll INF = 1e18; vi x; bool was[N]; int n, m, b[N]; pii a[N], t[N << 2]; void update (int pos, int x, int v = 1, int tl = 0, int tr = n - 1) { ++t[v].s; t[v].f += x; if (tl == tr) return; int tm = (tl + tr) / 2; if (pos <= tm) update(pos, x, v << 1, tl, tm); else update(pos, x, v << 1 | 1, tm + 1, tr); } void build (int v = 1, int tl = 0, int tr = n - 1) { t[v] = {0, 0}; if (tl == tr) return; int tm = (tl + tr) / 2; build(v << 1, tl, tm); build(v << 1 | 1, tm + 1, tr); } int get (int k, int v = 1) { if (!k) return 0; if (t[v].s == k) return t[v].f; if (t[v << 1].s > k) return get(k, v << 1); return t[v << 1].f + get(k - t[v << 1].s, v << 1 | 1); } main () { cin >> n >> m; for (int i = 1; i <= n; ++i) { cin >> a[i].s >> a[i].f; x.pb(a[i].s); } sort(all(x)); sort(a + 1, a + 1 + n); for (int i = 1; i <= n; ++i) for (int j = 0; j < sz(x); ++j) if (!was[j] && x[j] == a[i].s) { was[j] = 1; b[i] = j; break; } for (int i = 1; i <= n; ++i) b[i] = sz(x) - 1 - b[i]; int ans = -INF; for (int i = 1; i <= n; ++i) { build(); for (int j = i + 1; j <= n; ++j) { if (t[1].s >= m - 2) ans = max(ans, a[i].s + a[j].s - 2*(a[j].f - a[i].f) + get(m - 2)); update(b[j], a[j].s); } } cout << ans << endl; }

Compilation message (stderr)

cake3.cpp:81:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...