제출 #341844

#제출 시각아이디문제언어결과실행 시간메모리
341844RedhoodHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
1039 ms88432 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
#define len(x) (int)(x).size()
#define pb push_back
#define p2(x) (x)*(x)
#define all(x) (x).begin() , (x).end()
#define mkp make_pair


//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("-O3")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
typedef long double ld;
typedef long long ll;
const int N = 1e6 + 10;
const int inf = 1e9;
int fen[N];
void add(int v , int mn){
    for(;v<N;v += v & -v)
        fen[v] = max(fen[v] , mn);
}
int get(int r){
    int ans = -inf;
    for(;r > 0 ; r -= r & -r)
        ans = max(ans , fen[r]);
    return ans;
}
signed main()
{
    ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0);
    int n , m;cin >> n >> m;
    vector < int > w(n);
    for(auto &i  : w)
        cin >> i;
    vector < int > answer(m) , K(m);
    vector < vector < pair < int , int > > > left(n + 1);


    for(int qq = 0; qq < m; ++qq){
        int l , r , k;
        cin >> l >> r >> k;
        --l , --r;
        K[qq] = k;
        left[l].pb({qq , r});
    }
    vector < int > stac;
    fill(fen , fen + N , -inf);
    for(int l = n - 1; l  >= 0 ;--l){
        while(!stac.empty() && w[stac.back()] < w[l]){
            int lul = stac.back();
            add(lul , w[l]+w[stac.back()]);
            stac.pop_back();
        }
        stac.pb(l);
        for(auto u : left[l]){
            answer[u.fi] = get(u.se);
        }
    }
//    cout << " ANSWER \n";
//    for(auto u : answer)
//        cout << u << '\n';
    for(int i = 0 ; i < m; ++i){
        if(K[i] >= answer[i])
            cout << 1;
        else
            cout << 0;
        cout << '\n';
    }
    return 0;
}
/*


*/

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...