QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#267090#7744. ElevatorValenciaTravisWA 0ms3892kbC++201.4kb2023-11-26 22:22:342023-11-26 22:22:35

Judging History

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

  • [2023-11-26 22:22:35]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3892kb
  • [2023-11-26 22:22:34]
  • 提交

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;
    // printf("%lld\n", ans);
}
int main(){
    cin>>t;
    while(t--) work();
    return 0;
}

详细

Test #1:

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

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:


result:

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