Submission #890813

# Submission time Handle Problem Language Result Execution time Memory
890813 2023-12-22T03:44:17 Z vjudge1 Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) C++17
64 / 100
3000 ms 117588 KB
#include "bits/stdc++.h"
using namespace std;       

// #pragma comment(linker, "/stack:200000000")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")

using ll = long long;
using ld = long double;
#define pb push_back
#define ff first
#define ss second
#define sz(x) (ll)(x).size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void freopen(string s) { freopen((s+".in").c_str(), "r", stdin); freopen((s+".out").c_str(), "w", stdout); }
void IOIGold2024_InshAllah() { ios_base::sync_with_stdio(false); cin.tie(NULL); }
ll binmul(ll a, ll b, ll c) { ll res = 0; while(b) { if(b&1) (res += a) %= c; (a += a) %= c; b >>= 1; } return res; }
ll binpow(ll a, ll b, ll c) { ll res = 1; while(b) { if(b&1) (res *= a) %= c; (a *= a) %= c; b >>= 1; } return res; }
template<typename T> T gcd(T a, T b) { if(b==0) return a; return gcd(b, a%b); }
template<typename T> T lcm(T a, T b) { return a/gcd(a, b)*b; }
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ld rnd() { return rng()%INT_MAX*1.0/INT_MAX; }

const ll inf = 1e18+7, MX = LLONG_MAX, MN = LLONG_MIN;
const ll mod = 1e9+7, N = 1e6+5;
#define ll int
ll a[N], t[N][20], lg[N], res[N], bsz;
vector<ll> g[N];

ll get(ll l, ll r) {
    if(l>r) return 0;
    ll k = lg[r-l+1];
    return max(t[l][k], t[r-(1<<k)+1][k]);
}

void kigash() {
    ll n, q;
    cin>>n>>q, bsz = min(n, 700);
    ll mx = 0;
    for(ll i=1; i<=n; i++) {
        if(i>1) lg[i] = lg[i/2]+1;
        cin>>a[i], t[i][0] = a[i];
        if(a[i]<mx) res[(i+bsz-1)/bsz] = max(res[(i+bsz-1)/bsz], a[i]+mx);
        mx = max(mx, a[i]);
        g[(i+bsz-1)/bsz].pb(a[i]);
        if(i%bsz==0) mx = 0;
    }
    for(ll i=1; i<=n; i++) sort(all(g[i]));
    for(ll j=1; j<20; j++) {
        for(ll i=1; i+(1<<j)-1<=n; i++) {
            t[i][j] = max(t[i][j-1], t[i+(1<<(j-1))][j-1]);
        }
    }
    while(q--) {
        ll l, r, k, f = 0, mx = 0, i;
        cin>>l>>r>>k, i = l;
        for(i=l; i<=r && (i+bsz-1)/bsz==(l+bsz-1)/bsz; i++) {
            if(a[i]<mx) f = max(f, a[i]+mx);
            mx = max(mx, a[i]);
        }
        for(; i<=r && (i+bsz-1)/bsz!=(r+bsz-1)/bsz; i += bsz) {
            f = max(f, res[(i+bsz-1)/bsz]);
            mx = get(l, i-1);
            ll pos = lower_bound(all(g[(i+bsz-1)/bsz]), mx)-g[(i+bsz-1)/bsz].begin()-1;
            if(pos>-1) f = max(f, mx+g[(i+bsz-1)/bsz][pos]);
        }
        mx = get(l, i-1);
        for(; i<=r; i++) {
            if(a[i]<mx) f = max(f, a[i]+mx);
            mx = max(mx, a[i]);
        }
        cout<<(f>k ? 0 : 1)<<"\n";
    }
    return;
}

signed main(/*Kigash Amir*/) {
    // freopen("");
    IOIGold2024_InshAllah();
    ll tt = 1;
    // cin>>tt;
    for(ll i=1; i<=tt; i++) {
        kigash();
    }
}

Compilation message

sortbooks.cpp: In function 'void freopen(std::string)':
sortbooks.cpp:17:33: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 | void freopen(string s) { freopen((s+".in").c_str(), "r", stdin); freopen((s+".out").c_str(), "w", stdout); }
      |                          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:17:73: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 | void freopen(string s) { freopen((s+".in").c_str(), "r", stdin); freopen((s+".out").c_str(), "w", stdout); }
      |                                                                  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 29276 KB Output is correct
2 Correct 5 ms 29372 KB Output is correct
3 Correct 6 ms 29276 KB Output is correct
4 Correct 7 ms 29276 KB Output is correct
5 Correct 6 ms 29276 KB Output is correct
6 Correct 6 ms 29384 KB Output is correct
7 Correct 7 ms 29324 KB Output is correct
8 Correct 6 ms 29380 KB Output is correct
9 Correct 6 ms 29276 KB Output is correct
10 Correct 6 ms 29292 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 29276 KB Output is correct
2 Correct 5 ms 29372 KB Output is correct
3 Correct 6 ms 29276 KB Output is correct
4 Correct 7 ms 29276 KB Output is correct
5 Correct 6 ms 29276 KB Output is correct
6 Correct 6 ms 29384 KB Output is correct
7 Correct 7 ms 29324 KB Output is correct
8 Correct 6 ms 29380 KB Output is correct
9 Correct 6 ms 29276 KB Output is correct
10 Correct 6 ms 29292 KB Output is correct
11 Correct 11 ms 29276 KB Output is correct
12 Correct 12 ms 29432 KB Output is correct
13 Correct 13 ms 29276 KB Output is correct
14 Correct 17 ms 29432 KB Output is correct
15 Correct 17 ms 29276 KB Output is correct
16 Correct 19 ms 29276 KB Output is correct
17 Correct 20 ms 29276 KB Output is correct
18 Correct 19 ms 29276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 3097 ms 117588 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 330 ms 36884 KB Output is correct
2 Correct 462 ms 36752 KB Output is correct
3 Correct 348 ms 36544 KB Output is correct
4 Correct 326 ms 36628 KB Output is correct
5 Correct 302 ms 36616 KB Output is correct
6 Correct 439 ms 36648 KB Output is correct
7 Correct 445 ms 36752 KB Output is correct
8 Correct 464 ms 36504 KB Output is correct
9 Correct 167 ms 29524 KB Output is correct
10 Correct 452 ms 36676 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 29276 KB Output is correct
2 Correct 5 ms 29372 KB Output is correct
3 Correct 6 ms 29276 KB Output is correct
4 Correct 7 ms 29276 KB Output is correct
5 Correct 6 ms 29276 KB Output is correct
6 Correct 6 ms 29384 KB Output is correct
7 Correct 7 ms 29324 KB Output is correct
8 Correct 6 ms 29380 KB Output is correct
9 Correct 6 ms 29276 KB Output is correct
10 Correct 6 ms 29292 KB Output is correct
11 Correct 11 ms 29276 KB Output is correct
12 Correct 12 ms 29432 KB Output is correct
13 Correct 13 ms 29276 KB Output is correct
14 Correct 17 ms 29432 KB Output is correct
15 Correct 17 ms 29276 KB Output is correct
16 Correct 19 ms 29276 KB Output is correct
17 Correct 20 ms 29276 KB Output is correct
18 Correct 19 ms 29276 KB Output is correct
19 Correct 829 ms 45796 KB Output is correct
20 Correct 810 ms 46160 KB Output is correct
21 Correct 1366 ms 46200 KB Output is correct
22 Correct 1412 ms 46160 KB Output is correct
23 Correct 1418 ms 46168 KB Output is correct
24 Correct 1208 ms 46152 KB Output is correct
25 Correct 1160 ms 46144 KB Output is correct
26 Correct 1058 ms 46164 KB Output is correct
27 Correct 1081 ms 46160 KB Output is correct
28 Correct 1000 ms 46004 KB Output is correct
29 Correct 728 ms 46468 KB Output is correct
30 Correct 742 ms 46160 KB Output is correct
31 Correct 772 ms 45968 KB Output is correct
32 Correct 764 ms 45900 KB Output is correct
33 Correct 775 ms 45952 KB Output is correct
34 Correct 1319 ms 46152 KB Output is correct
35 Correct 1336 ms 45832 KB Output is correct
36 Correct 1414 ms 46244 KB Output is correct
37 Correct 1360 ms 45920 KB Output is correct
38 Correct 1414 ms 45968 KB Output is correct
39 Correct 1221 ms 46060 KB Output is correct
40 Correct 1016 ms 41420 KB Output is correct
41 Correct 1303 ms 46188 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 29276 KB Output is correct
2 Correct 5 ms 29372 KB Output is correct
3 Correct 6 ms 29276 KB Output is correct
4 Correct 7 ms 29276 KB Output is correct
5 Correct 6 ms 29276 KB Output is correct
6 Correct 6 ms 29384 KB Output is correct
7 Correct 7 ms 29324 KB Output is correct
8 Correct 6 ms 29380 KB Output is correct
9 Correct 6 ms 29276 KB Output is correct
10 Correct 6 ms 29292 KB Output is correct
11 Correct 11 ms 29276 KB Output is correct
12 Correct 12 ms 29432 KB Output is correct
13 Correct 13 ms 29276 KB Output is correct
14 Correct 17 ms 29432 KB Output is correct
15 Correct 17 ms 29276 KB Output is correct
16 Correct 19 ms 29276 KB Output is correct
17 Correct 20 ms 29276 KB Output is correct
18 Correct 19 ms 29276 KB Output is correct
19 Execution timed out 3097 ms 117588 KB Time limit exceeded
20 Halted 0 ms 0 KB -