Cod sursa(job #3362310)

Utilizator _s3b1Dumitru Sebastian Mihai _s3b1 Data 6 august 2026 09:37:54
Problema Elimin Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#define int long long
#define ll long long

using namespace std;
ifstream fin ("inno.in");
ofstream fout ("inno.out");
const int NMAX=1e5;
int v[NMAX*2+100],suf[NMAX*2+100],pref[NMAX*2+100];
int nrbiti(int n){
    int nrb=0;
    while (n){
        if (n%2==1){
            nrb++;
        }
        n/=2;
    }
    return nrb;
}
int lim=(1<<31)-1;

signed main()
{
    int n,k;
    fin>>n>>k;
    for (int i=1;i<=n;i++){
        fin>>v[i];
    }
    pref[0]=suf[n+1]=lim;
    /// prefix
    pref[1]=v[1];
    for (int i=2;i<=n;i++){
        pref[i]=pref[i-1]&v[i];
    }
    /// sufix
    suf[n]=v[n];
    for (int i=n-1;i>=1;i--){
        pref[i]=pref[i+1]&v[i];
    }
    /// brut dar optimizat cu prefixe si sufixe
    /// fac n^2 cu i si j
    /// fac ca si cum elimin secventa v[i],v[i+1],...,v[j]
    int cnt=0;
    for (int i=1;i<=n;i++){
        for (int j=i;j<=n;j++){
            int x=pref[i-1]&suf[j+1];
            fout<<x<<" ";
            if (nrbiti(x)>=k){
                cnt++;
                ///fout<<endl<<i<<" "<<j<<endl<<"------------------------"<<endl;
            }
        }
        fout<<endl;
    }
    fout<<cnt;
    return 0;
}