QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#863616 | #9730. Elevator II | 2018ljw# | AC ✓ | 125ms | 6640kb | C++14 | 1.3kb | 2025-01-19 20:13:32 | 2025-01-19 20:13:33 |
Judging History
answer
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define mp make_pair
using namespace std;
int n,f;
long long res;
struct pp{
int l,r,id;
bool vis;
}a[100001];
bool operator<(pp x,pp y){
return x.l==y.l?x.r<y.r:x.l<y.l;
}
bool cmp(pp x,pp y){
if(x.vis!=y.vis)return x.vis<y.vis;
return x.r>y.r;
}
int ans[100001],cnt;
priority_queue<pair<int,int> >w;
void upd(int lim){
while(w.size()){
int x=w.top().second;
if(a[x].r<lim)w.pop();
else break;
}
}
void solve(){
res=cnt=0;
while(w.size())w.pop();
int i,mx=0;
scanf("%d%d",&n,&f);
mx=f;
for(i=1;i<=n;i++){
scanf("%d%d",&a[i].l,&a[i].r);
a[i].id=i;
a[i].vis=0;
res+=a[i].r-a[i].l;
if(a[i].r>mx)mx=a[i].r;
}
sort(a+1,a+n+1);
int l=0;
while(f!=mx){
while(l<n&&a[l+1].l<=f)l++,w.push(mp(-a[l].r,l));
upd(f);
if(!w.size()){
l++;
res+=a[l].l-f;
f=a[l].r;
ans[++cnt]=a[l].id;
a[l].vis=1;
continue;
}
int g=w.top().second;
w.pop();
ans[++cnt]=a[g].id;
a[g].vis=1;
f=a[g].r;
}
printf("%lld\n",res);
sort(a+1,a+n+1,cmp);
for(i=1;i<=n&&!a[i].vis;i++)ans[++cnt]=a[i].id;
for(i=1;i<=n;i++)printf("%d ",ans[i]);
printf("\n");
}
int main(){
int t;
scanf("%d",&t);
while(t--)solve();
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3840kb
input:
2 4 2 3 6 1 3 2 7 5 6 2 5 2 4 6 8
output:
11 2 1 4 3 5 2 1
result:
ok ok 2 cases (2 test cases)
Test #2:
score: 0
Accepted
time: 60ms
memory: 3840kb
input:
6100 19 52 51 98 2 83 40 58 96 99 39 55 72 94 15 17 4 15 48 99 2 99 77 78 35 77 44 62 79 81 30 31 1 48 48 76 68 99 60 66 6 19 44 53 64 92 17 28 67 98 9 99 40 65 16 27 99 100 15 56 4 6 24 97 84 96 47 49 37 38 77 79 13 40 13 92 71 100 47 93 90 91 72 81 15 48 32 71 19 17 95 99 10 23 18 100 90 93 52 92 ...
output:
524 5 3 13 19 17 12 11 2 6 1 4 10 18 9 14 16 15 7 8 194 3 5 4 2 6 1 397 9 15 6 2 16 10 12 5 4 11 1 13 14 8 7 3 733 2 9 14 18 12 15 7 11 13 16 17 5 4 8 6 1 10 3 19 244 3 11 10 14 4 12 5 6 8 2 9 1 15 13 7 422 17 18 1 6 11 10 2 7 13 9 12 4 20 14 5 15 8 19 16 3 104 3 1 4 2 187 6 4 1 3 8 2 7 5 9 1...
result:
ok ok 6100 cases (6100 test cases)
Test #3:
score: 0
Accepted
time: 125ms
memory: 6556kb
input:
3 100000 9859 150464 951410 637107 897197 236268 936879 353406 403927 511229 999416 861211 958428 186246 446149 162388 805753 449016 817386 147119 604340 579101 926848 958992 987299 859662 907007 507058 690951 719158 856587 789149 927957 691705 707085 694110 845505 192759 616586 905489 935507 937041...
output:
24903933702 37753 66110 38835 33575 72464 34118 73217 78069 55863 26464 77219 79424 41872 59114 80746 73133 92340 2549 22619 8632 14210 59216 34781 50453 94943 74816 59567 53577 5731 13372 21428 57625 89335 77277 28116 50574 75753 17419 80416 65348 83724 74130 4169 87752 77599 94038 587 18683 56261 ...
result:
ok ok 3 cases (3 test cases)
Test #4:
score: 0
Accepted
time: 96ms
memory: 6192kb
input:
3 100000 932101 80818 80823 538842 538844 406812 406818 625053 625054 511066 511073 667363 667365 527022 527023 621329 621331 855832 855852 796168 796169 268927 268929 650891 650895 312793 312794 873256 873260 424896 424929 266271 266272 902201 902209 842863 842864 361599 361610 647851 647855 148132...
output:
986597 19954 61385 82641 30352 19378 11990 58790 73429 61591 47387 23379 20783 69618 41138 19101 41160 44088 30498 74602 95031 34312 64927 43082 10872 13641 99646 70364 12832 15412 20274 69688 31364 9367 16984 97033 42804 6654 83583 94175 77157 82305 60601 21546 50908 21059 98950 61273 85593 47916 8...
result:
ok ok 3 cases (3 test cases)
Test #5:
score: 0
Accepted
time: 100ms
memory: 6640kb
input:
3 100000 375117879 637628712 637644704 788784579 788792294 804734775 804734822 332639566 332642798 143113598 143114045 132119073 132122341 684483097 684513821 484676670 484678332 661667340 661668818 777865379 777870254 142495696 142495995 101735856 101740588 906481102 906481965 360087766 360091064 1...
output:
872643717 43549 34676 31878 49124 12077 8140 13605 76831 10834 96613 83688 46028 65944 14511 56152 84791 1759 60404 73244 38124 93732 74294 8688 64153 56500 39213 27938 93350 21680 36926 8295 8832 69685 1025 22233 14796 83881 83105 72820 95432 90168 29163 20496 4937 51441 96515 46657 82775 90528 380...
result:
ok ok 3 cases (3 test cases)
Extra Test:
score: 0
Extra Test Passed