QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#655657#7622. Yet Another CoffeeflsWA 1ms7792kbC++202.7kb2024-10-19 09:03:062024-10-19 09:03:07

Judging History

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

  • [2024-10-19 09:03:07]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:7792kb
  • [2024-10-19 09:03:06]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define qmx(a,b) a<b?b:a
#define qmn(a,b) a>b?b:a
#define ll long long
#define fr first
#define se second

const int mxn = 2e5+5;

priority_queue < pair<ll, int>, vector< pair<ll, int> >, greater< pair<ll, int>> >que;

priority_queue < ll, vector<ll>, greater<ll> > fq;

struct token{
    int ri;
    ll wi;
}wr[mxn];

ll a[mxn], mna[mxn], sufw[mxn], ans;

bool used[mxn];

inline bool cmp(struct token t1, struct token t2){
    return t1.ri < t2.ri;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int test, di;
    cin>>test;
    while(test--){
        int n, m;
        cin >> n >> m;
        mna[0] = 1;
        for(int i = 1 ; i <= n ; i++){
            cin >> a[i];
            used[i] = false;
            if(a[i] < a[mna[i - 1]])
                mna[i] = i;
            else
                mna[i] = mna[i - 1];
        }
        for(int i = 1 ; i <= m ; i++){
            cin >> wr[i].ri >> wr[i].wi;
        }
        sort(wr + 1, wr + 1 + m, cmp);
        sufw[m + 1] = 0;
        for(int i = m ; i >= 1 ; i--){
            sufw[i] = sufw[i + 1] + wr[i].wi;
        }
        que.push(make_pair(a[mna[wr[1].ri]] - sufw[1], 1));
        used[mna[wr[1].ri]] = true;
        for(int i = 2 ; i <= m ; i++){
            if(wr[i].ri == wr[i - 1].ri || mna[wr[i].ri] == mna[wr[i - 1].ri])
                continue;
            que.push(make_pair(a[mna[wr[i].ri]] - sufw[i], i));
            used[mna[wr[i].ri]] = true;
        }
        for(int i = 1 ; i <= n ; i++){
            if(!used[i]){
                fq.push(a[i]);
            }
        }
        ans = 0;
        di = m + 1;
        for(int pi, i = 1 ; i <= n ; i++){
            while(!que.empty() && que.top().second >= di){
                pi = que.top().second;
                fq.push(a[mna[wr[pi].ri]]);
                que.pop();
            }
            if(!que.empty() && !fq.empty()){
                if(que.top().first + sufw[di] < fq.top()){
                    ans += que.top().first + sufw[di];
                    di = que.top().second;
                    que.pop();
                }else{
                    ans += fq.top();
                    fq.pop();
                }
            }else{
                if(!que.empty()){
                    ans += que.top().first + sufw[di];
                    di = que.top().second;
                    que.pop();
                }else{
                    ans += fq.top();
                    fq.pop();
                }
            }
            cout << ans << " ";
        }
        cout << endl;
    }
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 7776kb

input:

5
10 14
17 37 59 65 53 73 68 177 160 111
10 177
5 193
2 30
3 63
2 339
3 263
5 178
2 190
9 23
10 328
10 200
9 8
3 391
6 230
12 9
152 306 86 88 324 59 18 14 42 260 304 55
3 50
2 170
1 252
7 811
1 713
7 215
10 201
4 926
8 319
19 20
182 74 180 201 326 243 195 31 170 263 284 233 48 166 272 281 179 116 31...

output:

-2596 -2559 -2506 -2447 -2382 -2314 -2241 -2130 -1970 -1793 
-3505 -3491 -3473 -3431 -3376 -3317 -3231 -3143 -2883 -2579 -2273 -1949 
-6527 -6496 -6448 -6374 -6258 -6092 -5922 -5743 -5563 -5368 -5167 -4934 -4691 -4428 -4156 -3875 -3591 -3272 -2946 
-3219 -2987 -2572 -2140 -1707 -1238 -768 -274 243 1...

result:

ok 70 numbers

Test #2:

score: 0
Accepted
time: 0ms
memory: 7764kb

input:

2
5 2
1 2 3 4 5
3 1
4 2
7 3
4 3 1 10 3 8 6
4 9
3 8
4 5

output:

-2 0 3 7 12 
-21 -18 -15 -11 -5 3 13 

result:

ok 12 numbers

Test #3:

score: 0
Accepted
time: 1ms
memory: 7768kb

input:

8
1 0
72916
9 11
130289 240521 653024 625847 679075 529899 486802 540872 353600
2 5400
2 257841
6 48161
3 71484
9 156788
3 181910
4 45589
6 210869
5 70426
9 87059
5 115764
8 7
634608 412120 360938 425426 825551 138578 678304 747502
2 235317
4 281859
5 553042
8 295615
8 32014
8 755313
4 439284
19 10
...

output:

72916 
-1121002 -880481 -526881 -40079 489820 1030692 1656539 2309563 2988638 
-2180324 -2041746 -1680808 -1255382 -620774 57530 805032 1630583 
-1025384 -1022941 -1018403 -1013731 -1006580 -998875 -987675 -970496 -953098 -932654 -909692 -886331 -862054 -835158 -807901 -779123 -747157 -713222 -67928...

result:

ok 85 numbers

Test #4:

score: 0
Accepted
time: 1ms
memory: 7716kb

input:

5
18 24
561699155 345484852 420718917 108291879 553918474 392861085 299874093 28528146 248352314 398850144 248444258 89834833 251398697 101739017 240342391 320200928 481962939 343719433
5 354704
6 9355942
7 7098134
16 38746862
15 35848885
14 42058214
15 18411581
9 23207206
18 19518309
14 20707458
13...

output:

-416165974 -387637828 -297802995 -196063978 44278413 292630727 541074985 792473682 1079767658 1379641751 1699842679 2043562112 2436423197 2835273341 3255992258 3737955197 4291873671 4853572826 
335919368 705602908 
146524143 438492672 
-3870833640 -3817930784 -3749728771 -3627446160 -3471700060 -322...

result:

ok 39 numbers

Test #5:

score: -100
Wrong Answer
time: 1ms
memory: 7792kb

input:

9
30 20
150 250 278 8 74 295 357 116 543 287 37 345 14 173 153 407 136 269 121 109 318 401 280 500 267 257 238 312 225 477
10 293
13 162
29 145
13 120
2 17
3 192
21 70
7 102
1 286
18 50
1 296
3 308
21 24
13 118
8 22
9 52
21 156
11 258
9 263
23 234
13 20
145 133 51 146 103 103 44 154 173 68 171 13 6
...

output:

-3018 -3010 -2996 -2959 -2885 -2776 -2660 -2539 -2403 -2250 -2077 -1852 -1614 -1364 -1107 -840 -571 -293 -13 274 569 881 1199 1544 1901 2302 2709 3186 3686 4229 
-3232 -3226 -3213 -3169 -3118 -3050 -2947 -2844 -2699 -2553 -2399 -2228 -2055 
-23341 -23339 -23319 -23279 -23197 -23103 -22992 -22875 -22...

result:

wrong answer 256th numbers differ - expected: '-7980', found: '-7978'