제출 #491767

#제출 시각아이디문제언어결과실행 시간메모리
491767reniHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
64 / 100
430 ms262148 KiB
#include<iostream>
#include<stack>
#define endl '\n'
#include<vector>
using namespace std;
long long maxi[5000000], a[5000000];
stack< pair<long long,long long> >st;
vector< pair< pair<long long,long long>, long long > >mm[10000000];
bool rez[10000000];
void update(long long le,long long ri,long long node,long long ind,long long val)
{
    if(le>node || ri<node)return;
    if(le==ri)
    {
        maxi[ind]=max(maxi[ind],val);return;
    }
    long long mid=(le+ri)/2;

    update(le,mid,node,2*ind,val);
    update(mid+1,ri,node,2*ind+1,val);

    maxi[ind]=max(maxi[2*ind],maxi[2*ind+1]);

}
long long query(long long le,long long ri,long long l,long long r,long long ind,long long k)
{
    if(le>r || ri<l)return 0;

    if(l<=le && ri<=r)
    {
        return maxi[ind];
    }
    long long mid=(le+ri)/2;

    long long r1,r2;

    r1=query(le,mid,l,r,2*ind,k);
    if(r1>k)return r1;
    r2=query(mid+1,ri,l,r,2*ind+1,k);

    return max(r1,r2);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long i,j,n,m,l,r,k,p;

    cin>>n>>m;

    for(i=1;i<=n;i++)
    {
        cin>>a[i];
    }

    for(i=1;i<=m;i++)
    {
        cin>>l>>r>>k;
        mm[r].push_back({ {l,k}, i});
    }

    for(i=1;i<=n;i++)
    {
        while(!st.empty() && st.top().first<=a[i])st.pop();
        if(!st.empty())
        {
            update(1,n,st.top().second,1,a[i]+st.top().first);
        }

        for(j=0;j<mm[i].size();j++)
        {
            long long ll=mm[i][j].first.first,
             k=mm[i][j].first.second,
              ind=mm[i][j].second;

            rez[ind]=max(rez[ind],query(1,n,ll,i,1,k)<=k);
        }
         st.push({a[i],i});

    }
    for(i=1;i<=m;i++)
    {
        cout<<rez[i]<<endl;
    }
}


/*
5 3
3 5 1 8 2
1 3 6
2 5 3
3 5 10

*/

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

sortbooks.cpp: In function 'int main()':
sortbooks.cpp:71:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<std::pair<long long int, long long int>, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |         for(j=0;j<mm[i].size();j++)
      |                 ~^~~~~~~~~~~~~
sortbooks.cpp:48:29: warning: unused variable 'p' [-Wunused-variable]
   48 |     long long i,j,n,m,l,r,k,p;
      |                             ^
#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...