Submission #1222494

#TimeUsernameProblemLanguageResultExecution timeMemory
1222494Bui_Quoc_CuongArt Exhibition (JOI18_art)C++20
100 / 100
171 ms20308 KiB
#include<bits/stdc++.h> using namespace std; typedef pair <int, int> pii; typedef vector <int> vi; typedef long long ll; #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--) #define fi first #define se second #define pb push_back #define ALL(a) (a).begin(), (a).end() #define SZ(a) (int)(a.size()) const int N = 5e5 + 5; const int oo = 2e9; const int MOD = 1e9 + 7; const ll INF = 1e18; int n; array <ll, 2> artwork[N]; ll pre[N]; ll st[4 * N], lazy[4 * N]; void build(int id, int l, int r){ if(l == r){ st[id] = - pre[l - 1] + artwork[l][0]; return; } int mid = (l + r) >> 1; build(id << 1, l, mid); build(id << 1 | 1, mid + 1, r); st[id] = max(st[id << 1], st[id << 1 | 1]); } ll get(int id, int l, int r, int u, int v){ if(l > v || r < u) return - 1e18; if(l >= u && r <= v) return st[id]; int mid = (l + r) >> 1; return max(get(id << 1, l, mid, u, v), get(id << 1 | 1, mid + 1, r, u, v)); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define taskname "kieuoanh" if(fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); } cin >> n; FOR(i, 1, n) cin >> artwork[i][0] >> artwork[i][1]; sort(artwork + 1, artwork + 1 + n); FOR(i, 1, n) pre[i] = pre[i - 1] + artwork[i][1]; // if(n <= 5e3){ // ll ans = - 1e18; // FOR(i, 1, n){ // ll S = 0; // ll mn = 1e18, mx = 0; // FOR(j, i, n){ // S+= artwork[j][1]; // mn = min(mn, artwork[j][0]); // mx = max(mx, artwork[j][0]); // ans = max(ans, S - (mx - mn)); // } // } // cout << ans; // return 0; // } build(1, 1, n); ll ans = - 1e18; FOR(i, 1, n){ ans = max(ans, - artwork[i][0] + pre[i] + get(1, 1, n, 1, i)); } cout << ans; return 0; }

Compilation message (stderr)

art.cpp: In function 'int main()':
art.cpp:49:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   49 |         freopen(taskname".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
art.cpp:50:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |         freopen(taskname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...