답안 #476486

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
476486 2021-09-27T10:28:01 Z neki Index (COCI21_index) C++14
60 / 110
2500 ms 100284 KB
#include <bits/stdc++.h>
#define ll int
#define loop(i, a, b) for(ll i=a;i<b;++i)
#define pool(i, a, b) for(ll i=a-1;i>=b;--i)
#define fore(i, a) for(auto&& i:a)
#define fi first
#define se second
#define ps(a) push_back(a)
#define pb(a) pop_back(a)
#define eb(...) emplace_back(__VA_ARGS__)
#define sc scanf
#define vc vector
#define lb lower_bound
#define ub upper_bound
#define all(a) a.begin(), a.end()
#define llmax LLONG_MAX/2
#define llmin -LLONG_MAX/2
using namespace std;
#define mn 500100
#define par pair<ll, ll>
#define ld long double
#define mod 1000000007

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll n, q;cin >> n >> q;
    
    vc<vc<ll>> tr(2 * n);
    loop(i, 0, n) {ll t;cin >> t;tr[i+n].eb(t);}
    pool(i, n, 1) tr[i].resize(tr[i * 2].size() + tr[i * 2 + 1].size());
    pool(no, n, 1) merge(all(tr[no * 2]), all(tr[no * 2 +1]), tr[no].begin());
    
    vc<vc<ll>> prno(q);
    
    loop(i, 0, q){
        ll ql, qr;cin >> ql >> qr;--ql;
        for(ql+=n, qr+=n;ql<qr;ql>>=1, qr>>=1){
            if(ql&1) prno[i].ps(ql++);
            if(qr&1) prno[i].ps(--qr);
        }
    }
    
    vc<ll> l(q, 1), r(q, n), mid(q);
    while(1){
        vc<ll> act;
        loop(i, 0, q) if(l[i]<r[i]) act.ps(i), mid[i]=(l[i]+r[i]+1)/2;
        if(act.size()==0) break;
        sort(all(act), [&](ll a, ll b){return mid[a]<mid[b];});
        
        vc<vc<ll>> ques(2 * n);
        vc<ll> sum(q, 0);
        fore(i, act){
            fore(v, prno[i]) ques[v].eb(i);
        }
        
        loop(i, 1, 2 * n) if(ques[i].size()){
            ll cur=0, k=tr[i].size();
            fore(v, ques[i]){
                while(cur<k and tr[i][cur]<mid[v]) cur++;
                sum[v]+=k-cur;
            }
        }
        
        fore(i, act){
            if(mid[i]<=sum[i]) l[i]=mid[i];
            else r[i]=mid[i]-1;
        }
    }
    loop(i, 0, q) cout << l[i] << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 588 KB Output is correct
2 Correct 5 ms 588 KB Output is correct
3 Correct 5 ms 588 KB Output is correct
4 Correct 6 ms 684 KB Output is correct
5 Correct 5 ms 588 KB Output is correct
6 Correct 5 ms 676 KB Output is correct
7 Correct 5 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 6 ms 588 KB Output is correct
10 Correct 5 ms 588 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 588 KB Output is correct
2 Correct 5 ms 588 KB Output is correct
3 Correct 5 ms 588 KB Output is correct
4 Correct 6 ms 684 KB Output is correct
5 Correct 5 ms 588 KB Output is correct
6 Correct 5 ms 676 KB Output is correct
7 Correct 5 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 6 ms 588 KB Output is correct
10 Correct 5 ms 588 KB Output is correct
11 Correct 541 ms 23864 KB Output is correct
12 Correct 579 ms 23740 KB Output is correct
13 Correct 522 ms 23700 KB Output is correct
14 Correct 523 ms 23872 KB Output is correct
15 Correct 542 ms 23740 KB Output is correct
16 Correct 573 ms 23880 KB Output is correct
17 Correct 580 ms 23872 KB Output is correct
18 Correct 559 ms 23740 KB Output is correct
19 Correct 548 ms 23740 KB Output is correct
20 Correct 535 ms 23828 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 588 KB Output is correct
2 Correct 5 ms 588 KB Output is correct
3 Correct 5 ms 588 KB Output is correct
4 Correct 6 ms 684 KB Output is correct
5 Correct 5 ms 588 KB Output is correct
6 Correct 5 ms 676 KB Output is correct
7 Correct 5 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 6 ms 588 KB Output is correct
10 Correct 5 ms 588 KB Output is correct
11 Correct 541 ms 23864 KB Output is correct
12 Correct 579 ms 23740 KB Output is correct
13 Correct 522 ms 23700 KB Output is correct
14 Correct 523 ms 23872 KB Output is correct
15 Correct 542 ms 23740 KB Output is correct
16 Correct 573 ms 23880 KB Output is correct
17 Correct 580 ms 23872 KB Output is correct
18 Correct 559 ms 23740 KB Output is correct
19 Correct 548 ms 23740 KB Output is correct
20 Correct 535 ms 23828 KB Output is correct
21 Execution timed out 2572 ms 100284 KB Time limit exceeded
22 Halted 0 ms 0 KB -