結果
| 問題 | 
                            No.142 単なる配列の操作に関する実装問題
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2019-07-22 15:11:23 | 
| 言語 | C  (gcc 13.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 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | RE * 5 | 
コンパイルメッセージ
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];
      |         ^~~~~~~~
            
            ソースコード
#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;
}