QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#637511 | #8777. Passport Stamps | Kyy008 | WA | 0ms | 3648kb | C++14 | 1.8kb | 2024-10-13 13:08:55 | 2024-10-13 13:08:55 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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'