結果

問題 No.142 単なる配列の操作に関する実装問題
ユーザー kamomekamome
提出日時 2019-07-22 15:11:23
言語 C
(gcc 12.3.0)
結果
RE  
実行時間 -
コード長 1,118 bytes
コンパイル時間 132 ms
コンパイル使用メモリ 30,848 KB
実行使用メモリ 17,664 KB
最終ジャッジ日時 2024-06-23 18:36:25
合計ジャッジ時間 2,241 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function 'mask_and_xor':
main.c:28:23: warning: '__builtin_memcpy' writing between 4 and 17179869184 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
   28 |         mini_arr[c-i] = arr[c];
      |         ~~~~~~~~~~~~~~^~~~~~~~
main.c:26:9: note: at offset -4 into destination object 'mini_arr' of size [0, 9223372036854775807]
   26 |     int mini_arr[length];
      |         ^~~~~~~~

ソースコード

diff #

#include <stdio.h>
int N,S,X,Y,Z;

void mk_arr_int (int arr[N]){
    arr[0]=S;
    int prev = S;
    for(int i=1;N>i;i++){
        prev = (X * prev + Y) % Z;
        arr[i] = prev;
    }
}

void mk_arr(int arr[N],int bool_arr[N]){
    for(int i=0;N>i;i++){
        if (arr[i]%2 == 0){
            bool_arr[i] = 0;
        }
        else{
            bool_arr[i] = 1;
        }
    }
}

void mask_and_xor(int arr[N],int i,int j,int m,int n){
    int length = n-m;
    int mini_arr[length];
    for(int c=i-1;c<j;c++){
        mini_arr[c-i] = arr[c]; 
    }
    for(int c=m-1;c<n;c++){
        arr[c] = mini_arr[c-m] ^ arr[c];
    }
}

int main(){
    
    scanf("%d %d %d %d %d",&N,&S,&X,&Y,&Z);
    int arr[N];
    int bool_arr[N];
    int Q;
    int I,J,K,L;
    scanf("%d",&Q);
    mk_arr_int(arr);
    mk_arr(arr,bool_arr);
    
    for(int i=0;i<Q;i++){
        scanf("%d %d %d %d",&I,&J,&K,&L);
        mask_and_xor(bool_arr,I,J,K,L);
    }


    for(int i=0;i<N;i++){
        if (bool_arr[i]==1){
            printf("%s","O");
        }
        else{
            printf("%s","E");
        }
    }
    return 0;
}
0