Submission #876692

# Submission time Handle Problem Language Result Execution time Memory
876692 2023-11-22T08:33:53 Z efedmrlr Fire (JOI20_ho_t5) C++17
13 / 100
253 ms 23592 KB
#include <bits/stdc++.h>

using namespace std;

#define n_l '\n'
#define dbg(...) cout << "[" << #__VA_ARGS__ << "]: "; cout << to_string(__VA_ARGS__) << endl
template <typename T, size_t N> int SIZE(const T (&t)[N]){ return N; } template<typename T> int SIZE(const T &t){ return t.size(); } string to_string(const string s, int x1=0, int x2=1e9){ return '"' + ((x1 < s.size()) ? s.substr(x1, x2-x1+1) : "") + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c){ return string({c}); } template<size_t N> string to_string(const bitset<N> &b, int x1=0, int x2=1e9){ string t = ""; for(int __iii__ = min(x1,SIZE(b)),  __jjj__ = min(x2, SIZE(b)-1); __iii__ <= __jjj__; ++__iii__){ t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A (&v), int x1=0, int x2=1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B> &p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A (&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if(l_v_l_v_l == 0) res += n_l; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2-x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if(e != l){ if(rnk > 1) { res += n_l; t_a_b_s = l_v_l_v_l; }; } else{ t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if(l_v_l_v_l == 0) res += n_l; return res; } void dbgm(){;} template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgm(T...); } 
#define dbgm(...) cout << "[" << #__VA_ARGS__ << "]: "; dbgm(__VA_ARGS__); cout << endl


#define int long long int
#define MP make_pair
#define pb push_back
#define REP(i,n) for(int (i) = 0; (i) < (n); (i)++)

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}


const double EPS = 0.00001;
const int INF = 1e16;
const int N = 3e5+5;
const int ALPH = 26;
const int LGN = 25;
const int MOD = 1e9+7;
int n,m,q;
vector<int> s;
vector<array<int,3> > que;

struct SegTree {
    vector<int> data;
    int sz;
    SegTree(int sz) {
        data.resize(4*(sz + 4), 0ll);
        this->sz = sz;
    }
    void build(int tl, int tr, int v, vector<int> &arr) {
        if(tl == tr) {
            data[v] = arr[tl];
            return;
        }
        int tm = (tl + tr) >> 1;
        build(tl, tm, v*2, arr);
        build(tm + 1, tr, v*2+1, arr);
        data[v] = max(data[v*2], data[v*2+1]);
    }
    int query(int tl, int tr, int v, int l , int r) {
        if(tl >= l && tr <= r) {
            return data[v];
        }
        if(tl > r || tr < l) {
            return 0;
        }
        int tm = (tl + tr) >> 1;
        return max(query(tl, tm, v*2, l, r), query(tm + 1, tr, v*2+1, l, r));
    }
    int query(int l, int r) {
        return query(0, sz, 1, l, r);
    }

};

inline void solve() {
    cin>>n>>q;
    s.resize(n+5);
    que.resize(q);
    bool sub2 = 1;
    REP(i,n) cin>>s[i + 1]; 
    REP(i,q) cin>>que[i][0]>>que[i][1]>>que[i][2];
    REP(i,q - 1) if(que[i][0] != que[i + 1][0]) sub2 = 0;
    vector<int> a(n+3, 0), pref(n+3, 0ll);
    SegTree st(n);
    st.build(0, st.sz, 1, s);
    
    if(sub2) {
    pref[0] = 0;
    for(int i = 1; i<=n; i++) {
        a[i] = st.query(max(i - que[0][0], 1ll), i);
        pref[i] = a[i] + pref[i - 1];
    }
    for(auto c : que) {
        cout<<pref[c[2]] - pref[c[1] - 1]<<"\n";
    }
    }
    else {
        for(auto c : que) {
            cout<<st.query(max(c[1] - c[0], 1ll), c[1])<<"\n";
        }
    }
}
 
signed main() {
    //fastio();
    int test = 1;
    //cin>>test;
    while(test--) {
        solve();
    }
    
}

Compilation message

ho_t5.cpp: In function 'std::string to_string(std::string, int, int)':
ho_t5.cpp:7:208: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 | template <typename T, size_t N> int SIZE(const T (&t)[N]){ return N; } template<typename T> int SIZE(const T &t){ return t.size(); } string to_string(const string s, int x1=0, int x2=1e9){ return '"' + ((x1 < s.size()) ? s.substr(x1, x2-x1+1) : "") + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c){ return string({c}); } template<size_t N> string to_string(const bitset<N> &b, int x1=0, int x2=1e9){ string t = ""; for(int __iii__ = min(x1,SIZE(b)),  __jjj__ = min(x2, SIZE(b)-1); __iii__ <= __jjj__; ++__iii__){ t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A (&v), int x1=0, int x2=1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B> &p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A (&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if(l_v_l_v_l == 0) res += n_l; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2-x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if(e != l){ if(rnk > 1) { res += n_l; t_a_b_s = l_v_l_v_l; }; } else{ t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if(l_v_l_v_l == 0) res += n_l; return res; } void dbgm(){;} template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgm(T...); }
      |                                                                                                                                                                                                             ~~~^~~~~~~~~~
ho_t5.cpp: In function 'void solve()':
ho_t5.cpp:14:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   14 | #define REP(i,n) for(int (i) = 0; (i) < (n); (i)++)
      |                          ^
ho_t5.cpp:70:5: note: in expansion of macro 'REP'
   70 |     REP(i,n) cin>>s[i + 1];
      |     ^~~
ho_t5.cpp:14:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   14 | #define REP(i,n) for(int (i) = 0; (i) < (n); (i)++)
      |                          ^
ho_t5.cpp:71:5: note: in expansion of macro 'REP'
   71 |     REP(i,q) cin>>que[i][0]>>que[i][1]>>que[i][2];
      |     ^~~
ho_t5.cpp:14:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   14 | #define REP(i,n) for(int (i) = 0; (i) < (n); (i)++)
      |                          ^
ho_t5.cpp:72:5: note: in expansion of macro 'REP'
   72 |     REP(i,q - 1) if(que[i][0] != que[i + 1][0]) sub2 = 0;
      |     ^~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 225 ms 18340 KB Output is correct
3 Correct 225 ms 18260 KB Output is correct
4 Correct 226 ms 18640 KB Output is correct
5 Correct 227 ms 18516 KB Output is correct
6 Correct 224 ms 18512 KB Output is correct
7 Correct 231 ms 18660 KB Output is correct
8 Correct 229 ms 18608 KB Output is correct
9 Correct 228 ms 18652 KB Output is correct
10 Correct 253 ms 18328 KB Output is correct
11 Correct 227 ms 18648 KB Output is correct
12 Correct 219 ms 18200 KB Output is correct
13 Correct 224 ms 18512 KB Output is correct
14 Correct 228 ms 18452 KB Output is correct
15 Correct 224 ms 18520 KB Output is correct
16 Correct 222 ms 18512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 241 ms 17648 KB Output is correct
3 Correct 243 ms 22864 KB Output is correct
4 Correct 246 ms 23592 KB Output is correct
5 Correct 242 ms 22944 KB Output is correct
6 Correct 247 ms 23196 KB Output is correct
7 Correct 239 ms 23128 KB Output is correct
8 Correct 250 ms 23384 KB Output is correct
9 Correct 243 ms 22868 KB Output is correct
10 Correct 234 ms 22700 KB Output is correct
11 Correct 249 ms 23584 KB Output is correct
12 Correct 240 ms 23012 KB Output is correct
13 Correct 247 ms 23400 KB Output is correct
14 Correct 240 ms 23020 KB Output is correct
15 Correct 252 ms 23404 KB Output is correct
16 Correct 238 ms 22912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 210 ms 15936 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -