QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#637511#8777. Passport StampsKyy008WA 0ms3648kbC++141.8kb2024-10-13 13:08:552024-10-13 13:08:55

Judging History

This is the latest submission verdict.

  • [2024-10-13 13:08:55]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3648kb
  • [2024-10-13 13:08:55]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    ll n, p;
    cin >> n >> p;
    vector<ll> c(n);
    for(int i=0; i<n; i++) cin >> c[i];
    
    // 使用优先队列维护未盖章段,默认是最大堆
    priority_queue<ll> pq;
    pq.push(p);
    
    for(int i=0; i<n; i++){
        ll ci = c[i];
        if(pq.empty()){
            // 没有未盖章段可以盖章
            cout << i;
            return 0;
        }
        ll current_max = pq.top();
        pq.pop();
        if(current_max < ci){
            // 当前最大的未盖章段不足以盖章
            cout << i;
            return 0;
        }
        // 最坏情况下,盖章会将段分割成两部分
        // 假设盖章尽可能中间盖章,分割成两部分
        // 盖章长度为 ci,所以剩余的左边长度为 (current_max - ci) / 2
        // 右边同理
        // 具体分割方式会影响剩余段的长度,但为了最坏情况,我们假设盖章后剩余段尽可能小
        // 实际上,最坏情况下移民官员会尽量让剩余的未盖章段尽可能分散
        // 这里我们简单地将盖章放在一端,剩余部分保持尽可能大
        // 盖在左边
        ll left = 0;
        ll right = current_max - ci;
        if(right > 0) pq.push(right);
        
        // 盖章也可以选择盖在右边,效果相同
        // 如果需要更精确的分割,可以进一步调整
        
        // 注意:因为移民官员会选择最不利的分割方式,我们需要确保尽可能地减少未盖章段的最大长度
        // 这里简化处理,将剩余段放回堆中
    }
    // 如果所有旅行都可以完成
    cout << n;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3648kb

input:

5 15
1
2
3
4
5

output:

5

result:

wrong answer 1st lines differ - expected: '3', found: '5'