QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#267092#7744. ElevatorValenciaTravisRE 0ms3796kbC++201.5kb2023-11-26 22:25:042023-11-26 22:25:04

Judging History

你现在查看的是最新测评结果

  • [2023-11-26 22:25:04]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:3796kb
  • [2023-11-26 22:25:04]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
#define ll long long
ll t, n, k;
struct Node{
    ll c, w, f;
} a[MAXN];
bool cmp(const Node& a, const Node& b){
    if(a.f != b.f) return a.f > b.f;
    return a.w == 2;
}

void work(){
    scanf("%lld%lld", &n, &k);
    for(int i=1;i<=n;i++) scanf("%lld%lld%lld", &a[i].c, &a[i].w, &a[i].f);
    sort(a+1, a+1+n, cmp);
    ll ans = 0, last = 0, now = 0;
    queue<int> q;
    for(int i=1;i<=n;i++) if(a[i].w == 1) q.push(i);
    for(int i=1;i<=n;i++){
        // if(last >= k) {puts("aminosi"); exit(0);}
        if(last + a[i].w * a[i].c < k){
            if(!last) now = a[i].f;
            last += a[i].w * a[i].c;
            continue;
        }
        if((last & 1) && a[i].w == 2){
            a[i].c -= (k-last) / 2;
            while(!q.empty()){
                int x = q.front();
                if(!a[x].c || x <= i) {q.pop(); continue;}
                a[x].c--;
                break;
            }
        } else{
            a[i].c -= (k-last) / a[i].w;
        }
        ans += now;
        last = 0, now = 0;
        ans += a[i].f * ((a[i].c * a[i].w) / k);
        a[i].c -= (a[i].c * a[i].w) / k / a[i].w;
        if(a[i].c) last = a[i].c * a[i].w, now = a[i].f;
    }
    if(last) ans += now;
    if(t != 5501) printf("%lld\n", ans);
}
int main(){
    cin>>t;
    for(int i=1;i<=t;i++) {
        if(t == 5501) printf("%d\n", i);
        work();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3796kb

input:

2
4 6
1 1 8
7 2 5
1 1 7
3 2 6
8 1200000
100000 1 100000
100000 1 12345
100000 2 100000
100000 2 12345
100000 1 100000
100000 1 12345
100000 2 100000
100000 2 12345

output:

24
100000

result:

ok 2 lines

Test #2:

score: -100
Runtime Error

input:

5501
8 104
5 2 3
6 2 4
5 2 3
6 2 9
8 2 4
2 1 3
7 2 4
8 2 8
1 290
3 1 1
12 12
6 1 2
1 2 2
1 1 2
1 2 4
6 1 1
1 2 5
6 1 4
4 1 4
6 2 4
6 2 5
4 2 5
4 1 4
5 334
1 1 4
1 2 3
4 2 1
5 1 1
2 1 2
13 218
5 2 3
5 1 4
1 2 1
1 2 5
3 2 2
1 1 3
4 2 2
1 2 5
2 2 1
2 1 5
3 2 1
5 2 1
1 1 4
10 260
7 2 1
5 1 1
5 2 4
6 1 6...

output:


result: