QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#267075#7744. ElevatorValenciaTravisTL 0ms4080kbC++201.3kb2023-11-26 22:10:482023-11-26 22:10:48

Judging History

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

  • [2023-11-26 22:10:48]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:4080kb
  • [2023-11-26 22:10:48]
  • 提交

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 + 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--;
            }
        } 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, now = a[i].f;
    }
    if(last) ans += now;
    printf("%lld\n", ans);
}
int main(){
    cin>>t;
    while(t--) work();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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
Time Limit Exceeded

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:

9
1
20
4
5
7
0
3
9
6
1
10
4
9
17
6
4
1
8
5
5
7
1
3
21
6
3
3
2
2
2
3
8
1
5
6
9
11
162
7
10
2
7
7
8
6
5
5
1
7
3
5
10
7
7
10
8
1
4
2
3
9
1
5
2
9
1
6
7
7
6
10
18
8
10
4
10
9
2
8
3
5
9
3
6
5
3
2
6
1
3
2
2
1
6
9
6
3
4
8
9
9
2
6
1
2
6
7
5
2
5
17
8
1
2
3
4
9
3
4
6
5
9
6
1
7
3
7
3
2
2
8
7
3
5
9
7
10
7
3
2
4
...

result: