QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#152912#149. PeruAbdelmagedNour#Compile Error//C++201.1kb2023-08-29 00:23:022024-07-04 01:52:06

Judging History

This is a historical verdict posted at 2024-07-04 01:52:06.

  • [2024-09-10 16:43:42]
  • 管理员手动重测本题所有提交记录
  • Verdict: 49
  • Time: 51ms
  • Memory: 12928kb
  • [2024-07-04 01:52:06]
  • Judged
  • [2023-08-29 00:23:02]
  • Submitted

answer

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
//#include "grader.cpp"
#include "peru.h"
typedef long long ll;
const int N=2500005,mod=(1e9)+7;
struct FastSet{
    priority_queue<ll,vector<ll>,greater<ll>>pq1,pq2;
    void push(ll x){pq1.push(x);}
    void del(ll x){pq2.push(x);}
    ll top(){
        while(!pq1.empty()&&!pq2.empty()&&pq1.top()==pq2.top())pq1.pop(),pq2.pop();
        return pq1.empty()?LLONG_MAX:pq1.top();
    }
}st;
ll dp[N];
int solve(int n, int k, int* v){
    deque<int>dq;
    v--;
    for(int i=1;i<=n;i++){
        while(!dq.empty()&&dq.front()<i-k){
            if(dq.size()>1)st.del(dp[dq[0]]+v[dq[1]]);
            dq.pop_front();
        }
        while(!dq.empty()&&v[dq.back()]<=v[i]){
            if(dq.size()>1)st.del(dp[dq[dq.size()-2]]+v[dq.back()]);
            dq.pop_back();
        }
        if(!dq.empty())st.push(dp[dq.back()]+v[i]);
        dq.push_back(i);
        dp[i]=st.top();
        dp[i]=min(dp[i],dp[max(i-k,0)]+v[dq.front()]);
    }
    long long res=0;
    for(int i=1;i<=n;i++)res=(res*23+dp[i])%mod;
    return res;
}

詳細信息