258042026-03-03 16:47:05anonTiltott pár (45 pont)cpp17Time limit exceeded 37/45675ms4524 KiB
#include <bits/stdc++.h>
#define sz(x) ((ll) (x).size())
#define all(x) (x).begin(), (x).end()
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
using namespace std;
typedef long long ll;
int main() {
    FastIO;
    ll N;
    cin>>N;
    vector<ll>A(N);
    for(auto &x:A)
        cin>>x;
    map<ll,vector<ll>>m;
    for(ll i=0;i<N;i++)
        m[A[i]].push_back(i);
    ll Q;
    cin>>Q;
    while(Q--){
        ll X,Y;
        cin>>Y>>X;
        ll xlo=0;
        ll xhi=sz(m[X]);
        ll xc=xhi;
        if(!xc){
            cout<<"0\n";
            continue;
        }
        ll ylo=0;
        ll yhi=sz(m[Y]);
        ll lo=0;
        ll hi=N;
        while(lo+1<hi){
            ll mid=(lo+hi)>>1;
            ll c1=upper_bound(m[X].begin()+xlo,m[X].begin()+xhi,mid)-m[X].begin();
            ll c2=upper_bound(m[Y].begin()+ylo,m[Y].begin()+yhi,mid)-m[Y].begin();
            if(c1+c2<=xc){
                lo=mid;
                xlo=c1;
                ylo=c2;
            }
            else{
                hi=mid;
                xhi=c1;
                yhi=c2;
            }
        }
        ll ans=upper_bound(all(m[Y]),lo)-m[Y].begin();
        cout<<ans<<'\n';
    }
    return 0;
}

SubtaskSumTestVerdictTimeMemory
base37/45
1Accepted0/01ms316 KiB
2Accepted0/04ms512 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/22ms316 KiB
6Accepted2/22ms316 KiB
7Accepted2/24ms512 KiB
8Accepted2/24ms316 KiB
9Accepted3/34ms316 KiB
10Time limit exceeded0/2625ms3892 KiB
11Accepted2/2596ms3696 KiB
12Time limit exceeded0/2662ms4524 KiB
13Time limit exceeded0/2617ms4216 KiB
14Accepted3/3559ms2476 KiB
15Accepted3/3556ms2340 KiB
16Time limit exceeded0/2675ms2656 KiB
17Accepted2/2541ms2512 KiB
18Accepted2/2527ms2344 KiB
19Accepted2/2291ms1584 KiB
20Accepted2/2157ms2556 KiB
21Accepted2/2143ms2608 KiB
22Accepted2/2165ms2660 KiB
23Accepted2/2158ms2624 KiB