結果
問題 | No.142 単なる配列の操作に関する実装問題 |
ユーザー | kamome |
提出日時 | 2019-07-22 15:10:14 |
言語 | C (gcc 12.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,174 bytes |
コンパイル時間 | 383 ms |
コンパイル使用メモリ | 34,048 KB |
実行使用メモリ | 17,656 KB |
最終ジャッジ日時 | 2024-06-23 18:36:21 |
合計ジャッジ時間 | 3,711 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | RE | - |
testcase_01 | RE | - |
testcase_02 | RE | - |
testcase_03 | RE | - |
testcase_04 | RE | - |
コンパイルメッセージ
main.c: In function 'mask_and_xor': main.c:31:23: warning: '__builtin_memcpy' writing between 4 and 17179869184 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] 31 | mini_arr[c-i] = arr[c]; | ~~~~~~~~~~~~~~^~~~~~~~ main.c:29:9: note: at offset -4 into destination object 'mini_arr' of size [0, 9223372036854775807] 29 | int mini_arr[length]; | ^~~~~~~~ In function 'mask_and_xor', inlined from 'main' at main.c:51:9: main.c:31:23: warning: '__builtin_memcpy' writing between 4 and 17179869184 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] 31 | mini_arr[c-i] = arr[c]; | ~~~~~~~~~~~~~~^~~~~~~~ main.c:29:9: note: at offset -4 into destination object 'mini_arr' of size [0, 9223372036854775807] 29 | int mini_arr[length]; | ^~~~~~~~
ソースコード
#pragma GCC optimize ("O3") #pragma GCC target ("avx") #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; }