(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #685212

#TimeUsernameProblemLanguageResultExecution timeMemory
685212Farhan_HYGrudanje (COCI19_grudanje)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define F first #define S second #define T int t; cin >> t; while(t--) #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; const int N = 1e5 + 5; const int M = 1e3 + 3; const int inf = 1e18; const int mod = 1e9 + 7; int n, q, a[N]; pair<int, int> p[N], tree[30][4 * N]; string s; pair<int, int> getMax(pair<int, int> p1, pair<int, int> p2) { int mx = 0, mx2 = 0; mx = max({p1.F, p1.S, p2.F, p2.S}); if (p1.F == mx) p1.F = 0; else if (p1.S == mx) p1.S = 0; else if (p2.F == mx) p2.F = 0; else if (p2.S == mx) p2.S = 0; mx2 = max({p1.F, p1.S, p2.F, p2.S}); return {mx1, mx2}; } void build(int letter, int node, int tl, int tr) { if (tr == tl) { if (s[tr] == (letter + 'a')) tree[letter][node] = {a[tl], 0}; return; } int mid = (tl + tr) / 2; build(letter, 2 * node, tl, mid); build(letter, 2 * node + 1, mid + 1, tr); tree[letter][node] = getMax(tree[letter][2 * node], tree[letter][2 * node + 1]); } pair<int, int> get(int letter, int node, int tl, int tr, int l, int r) { if (tr < l || tl > r) return {0, 0}; if (l <= tl && tr <= r) return tree[letter][node]; int mid = (tl + tr) / 2; pair<int, int> p1 = get(letter, 2 * node, tl, mid, l, r); pair<int, int> p2 = get(letter, 2 * node + 1, mid + 1, tr, l, r); return getMax(p1, p2); } main() { IOS cin >> s; n = s.size(); s = '.' + s; cin >> q; for(int i = 1; i <= q; i++) cin >> p[i].F >> p[i].S; sort(p, p + q + 1); for(int i = 1; i <= n; i++) { int x; cin >> x; a[x] = i; } int mx = 0; for(int j = 0; j < 26; j++) build(j, 1, 1, n); for(int i = 1; i <= q; i++) { for(int j = 0; j < 26; j++) { int l = p[i].F, r = p[i].S; int need = get(j, 1, 1, n, l, r).S; mx = max(mx, need); } } cout << mx << '\n'; }

Compilation message (stderr)

grudanje.cpp:10:17: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   10 | const int inf = 1e18;
      |                 ^~~~
grudanje.cpp: In function 'std::pair<int, int> getMax(std::pair<int, int>, std::pair<int, int>)':
grudanje.cpp:24:13: error: 'mx1' was not declared in this scope; did you mean 'mx2'?
   24 |     return {mx1, mx2};
      |             ^~~
      |             mx2
grudanje.cpp:24:21: error: could not convert '{<expression error>, mx2}' from '<brace-enclosed initializer list>' to 'std::pair<int, int>'
   24 |     return {mx1, mx2};
      |                     ^
      |                     |
      |                     <brace-enclosed initializer list>
grudanje.cpp: At global scope:
grudanje.cpp:47:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   47 | main() {
      | ^~~~