长长久久【C语言】


解题思路

复制代码
#include<stdio.h>
#define MAX_N 100005
int a[MAX_N];
int cnt[32];
int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<32;i++){
        cnt[i]=0;
    }
    for(int i=0;i<k;i++){
        int num=a[i];
        for(int j=0;j<32;j++){
            if(num&(1<<j)){
                cnt[j]++;
            }
        }
    }
    int max_or=0;
    for(int j=0;j<32;j++){
        if(cnt[j]>0){
            max_or|=(1<<j);
        }
    }
    for(int i=k;i<n;i++){
        int remove=a[i-k];
        for(int j=0;j<32;j++){
            if(remove&(1<<j)){
                cnt[j]--;
            }
        }
        int add=a[i];
        for(int j=0;j<32;j++){
            if(add&(1<<j)){
                cnt[j]++;
            }
        }
        int current_or=0;
        for(int j=0;j<32;j++){
            if(cnt[j]>0){
                current_or|=(1<<j);
            }
        }
        if(current_or>max_or){
            max_or=current_or;
        }
    }
    printf("%d\n",max_or);
    return 0;
}
相关推荐
灯厂码农10 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
wuyk55510 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机
qq_2415856111 小时前
可用在中断中浮点数打印类似printf
c语言
C语言小火车12 小时前
C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
c语言·开发语言·c++·面试·排序算法·快速排序
aaaameliaaa14 小时前
进制练习题【找出只出现一次的数字、交换两个变量(不创建临时变量)、统计二进制中1的个数、打印整数二进制的奇数位和偶数位、求两个数二进制中不同位的个数】
c语言·数据结构·笔记·算法
灯厂码农14 小时前
C语言内存管理——内存对齐与共用体union
linux·服务器·c语言
伏 念16 小时前
AI Coding 零基础实战教程
c语言·进程·预处理
你家人养牛16 小时前
OOC Relation Plugin:C 语言面向对象 开发的高效辅助工具
c语言·vscode
东华万里16 小时前
第30篇 代码习惯 初学C与数据结构有感
c语言·数据结构·大学生专区
想你依然心痛17 小时前
嵌入式C代码规范:MISRA-C 2012核心规则解读——类型安全与未定义行为深度剖析
c语言·安全·代码规范