QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#749554#3028. Frogsredhood#AC ✓250ms12672kbC++202.0kb2024-11-15 03:44:232024-11-15 03:44:24

Judging History

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

  • [2024-11-15 03:44:24]
  • 评测
  • 测评结果:AC
  • 用时:250ms
  • 内存:12672kb
  • [2024-11-15 03:44:23]
  • 提交

answer

#include<bits/stdc++.h>

#define fi first
#define se second
#define sz(x) (int)(x).size()
#define pb push_back
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)


using namespace std;


using pii = pair<int, int>;
using vi = vector<int>;
using ll = long long;



#ifdef DEBUG
auto&operator<<(auto&o,pair<auto,auto>p){return o<<"("<<p.first<<", "<<p.second<<")";}
auto operator<<(auto&o,auto x)->decltype(x.end(),o){o<<"{";int i=0;for(auto e:x)o<<","+!i++<<e;return o<<"}";}
#define debug(x...) cerr<<"["#x"]: ",[](auto...$){((cerr<<$<<"; "),...)<<endl;}(x)
#else
#define debug(...) {}
#endif

void solve(){

   int n;
   cin >> n;
   vector < int > s(n);
   vector < int > have(n);

   vector < pair < int , int > > events;
   for(int i = 0; i < n; ++i){
        int r;
        cin >> r >> s[i];
        events.push_back({max(0 , i - r) , i});
        events.push_back({min(n + 1, i + r + 1), i});
   }
   int ptr = 0;

   multiset<int> vals;

   ll answer = 0;

   sort(all(events));
   for(auto &i : events){
        while(ptr < sz(events) && events[ptr].fi <= i.fi){
            int ind = events[ptr].se;
            if(!have[ind]){
                debug("add ", ind);
                vals.insert(s[ind]);
                have[ind] = 1;
            }else{
                debug("rase " , ind);
                vals.erase(vals.find(s[ind]));
            }
            ++ptr;
        }
        if(sz(vals) >= 3){
            auto it = vals.end();
            ll cur_ans = *(--it) + *(--it) + *(--it);
            answer = max(answer , cur_ans);
        }

        debug("lol ", i.fi,  vals);
   }
   cout << answer << '\n';
}
int main(){
    cin.tie(0)->sync_with_stdio(false);
    cin.exceptions(cin.failbit);


    int t;
    cin >> t;
    while(t--){
        solve();
    }

    return 0;
}
/*
3
4
1 39
2 17
4 5
1 40
3
1 10
1 20
1 30
7
5 4
4 3
3 2
2 1
3 2
4 3
5 4
*/


詳細信息

Test #1:

score: 100
Accepted
time: 188ms
memory: 12384kb

input:

29
24946
1 145304
3 52200
2 96731
2 96731
34 5867
5 39209
1 124746
1 195359
1 140091
1 195359
1 140091
2 94760
7 26440
14 14264
34 5735
2 67479
1 116444
4 43152
2 70412
3 54405
3 54405
1 106845
4 49540
1 106845
1 118592
27 7212
1 118592
2 74860
243 821
6 28584
2 74860
1 103054
6 29393
3 55906
2 7299...

output:

596106
213676
571306
288754
4
108
4
8
599840
27
62
539982
46
235651
317587
5
258922
449979
25
165256
12
599968
11
3
5
413196
4
599639
60

result:

ok 29 lines

Test #2:

score: 0
Accepted
time: 250ms
memory: 12672kb

input:

30
3758
62 1
107 1
134 3
133 1
92 1
65 1
276 1
316 1
111 1
274 1
374 2
100 2
217 1
40 1
127 1
123 1
270 2
18 1
26 1
233 2
278 3
152 2
157 2
9 2
61 1
29 1
374 1
45 1
156 1
231 1
303 1
405 1
330 1
407 2
375 3
111 1
269 1
115 1
17 1
56 1
363 1
255 2
176 1
66 3
132 1
35 2
391 1
371 2
260 1
175 1
369 4
7...

output:

15
111
570316
6
145
598141
9790
379220
6
302651
8977
7187
574039
276501
528609
1189
6
416728
20557
9
20919
9
524338
266777
500921
559918
62
10635
3609
521671

result:

ok 30 lines

Test #3:

score: 0
Accepted
time: 155ms
memory: 11992kb

input:

30
16
3 9
7 18
3 20
8 2
5 9
6 1
2 19
2 6
3 22
2 8
7 11
3 9
1 12
2 6
8 11
7 7
16
13 2
2 2
13 2
12 4
3 4
2 3
2 3
1 3
1 3
11 1
1 3
4 3
11 4
7 2
7 5
7 4
166437
1 182681
1 170305
1 130895
2 81506
1 121104
2 99552
1 134739
1 180951
2 82208
2 86256
1 189082
3 53511
1 172928
6 32142
2 88879
1 136048
1 13239...

output:

61
13
589248
5
565958
296385
3
42
83
419938
25
541769
569373
12
385323
3
24
410656
579080
4
63
15
317025
6
246039
310300
133
239965
335677
12

result:

ok 30 lines