제출 #1287334

#제출 시각아이디문제언어결과실행 시간메모리
1287334wedonttalkanymoreElection (BOI18_election)C++20
100 / 100
403 ms66732 KiB
#include <bits/stdc++.h> /* Phia ben kia dai duong cung chi co Bo cat nang niu bien thoi */ using namespace std; using ll = long long; #define int long long #define pii pair<ll, ll> #define fi first #define se second const ll N = 5e5 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 19; int n; char a[N]; int q; struct ST { struct item { int L, R, sum, ans; item() : L(0), R(0), sum(0), ans(0) {} }; vector <item> st; ST (int _n) { st.assign(4 * (_n + 1), item()); } item combine(item &A, item &B) { item C; C.L = max(A.L, A.sum + B.L); C.R = max(B.R, A.R + B.sum); C.sum = A.sum + B.sum; C.ans = max({A.ans + B.sum, A.sum + B.ans, A.L + B.R}); return C; } void update(int i, int l, int r, int pos, char val) { if (l == r) { item tmp; if (val == 'C') { tmp.L = 0, tmp.R = 0, tmp.sum = -1, tmp.ans = 0; } else { tmp.L = 1, tmp.R = 1, tmp.sum = 1, tmp.ans = 1; } st[i] = tmp; return; } int mid = (l + r) / 2; if (pos <= mid) update(2 * i, l, mid, pos, val); else update(2 * i + 1, mid + 1, r, pos, val); st[i] = combine(st[2 * i], st[2 * i + 1]); } item get(int i, int l, int r, int u, int v) { if (u > r || v < l) return item(); if (u <= l && r <= v) return st[i]; int mid = (l + r) / 2; auto L = get(2 * i, l, mid, u, v); auto R = get(2 * i + 1, mid + 1, r, u, v); return combine(L, R); } } st(N); signed main() { ios::sync_with_stdio(false); cin.tie(0); if (fopen(".inp", "r")) { freopen(".inp", "r", stdin); freopen(".out", "w", stdout); } cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; st.update(1, 1, n, i, a[i]); } cin >> q; while(q-- > 0) { int l, r; cin >> l >> r; cout << st.get(1, 1, n, l, r).ans << '\n'; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

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