結果
| 問題 |
No.142 単なる配列の操作に関する実装問題
|
| コンテスト | |
| ユーザー |
沙耶花
|
| 提出日時 | 2021-10-28 08:30:20 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,194 bytes |
| コンパイル時間 | 4,665 ms |
| コンパイル使用メモリ | 252,664 KB |
| 最終ジャッジ日時 | 2025-01-25 08:01:37 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 5 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:37:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
37 | scanf("%d %d %d %d",&s,&t,&u,&hoge);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
using mint = modint1000000007;
using namespace std;
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define Inf 1000000000000000000
unsigned long long temp[2000];
int main(){
long long N,S,X,Y,Z;
cin>>N>>S>>X>>Y>>Z;
vector<long long> a(N);
a[0] = S;
rep(i,N-1){
a[i+1] = X * a[i] + Y;
a[i+1] %= Z;
}
int sz = (N+63)/64;
vector<unsigned long long> v(sz,0);
rep(i,N){
if(a[i]%2==1){
v[i/64] |= 1ULL<<(i%64);
}
}
v.push_back(0);
int Q;
cin>>Q;
rep(_,Q){
int s,t,u,hoge;
scanf("%d %d %d %d",&s,&t,&u,&hoge);
s--;t--;u--;hoge--;
int len = t-s+1;
rep(i,(len+63)/64)temp[i] = 0;
rep(i,len/64){
temp[i] = (v[s/64 + i]>>(s%64));
temp[i] ^= (v[s/64+1 + i]<<(64-s%64));
}
rep(i,len%64){
int ind = s + len/64 * 64 + i;
if((v[ind/64]>>(ind%64))&1)temp[len/64] |= 1ULL<<i;
}
rep(i,(len+63)/64){
//cout<<(bitset<64>)temp[i]<<endl;
v[u/64 + i] ^= temp[i]<<(u%64);
if(u%64!=0)v[u/64 + i + 1] ^= temp[i]>>(64-u%64);
}
}
rep(i,N){
int b = (v[i/64]>>(i%64))&1;
if(b==0)printf("E");
else printf("O");
}
cout<<endl;
return 0;
}
沙耶花