結果
| 問題 | No.3516 Very Large Range Mod |
| コンテスト | |
| ユーザー |
沙耶花
|
| 提出日時 | 2026-04-24 22:09:40 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,233 bytes |
| 記録 | |
| コンパイル時間 | 4,421 ms |
| コンパイル使用メモリ | 277,448 KB |
| 実行使用メモリ | 7,976 KB |
| 最終ジャッジ日時 | 2026-04-24 22:10:03 |
| 合計ジャッジ時間 | 19,745 ms |
|
ジャッジサーバーID (参考情報) |
judge4_1 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | WA * 30 |
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:37:18: warning: 'ri' may be used uninitialized [-Wmaybe-uninitialized]
37 | while(ri < N){
| ~~~^~~
main.cpp:18:25: note: 'ri' was declared here
18 | long long li,lj,ri,rj;
| ^~
main.cpp:39:42: warning: 'rj' may be used uninitialized [-Wmaybe-uninitialized]
39 | long long num = min(b[ri]-rj,b[li]-1-lj)+1;
main.cpp:18:28: note: 'rj' was declared here
18 | long long li,lj,ri,rj;
| ^~
ソースコード
#include <stdio.h>
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
using mint = modint998244353;
using namespace std;
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define Inf32 1000000001
#define Inf64 4000000000000000001LL
int main(){
long long N,K,M;
cin>>N>>K>>M;
vector<long long> b(N),c(N);
rep(i,N)cin>>b[i];
rep(i,N)cin>>c[i];
long long li,lj,ri,rj;
li = 0,lj = 0;
long long as = 0;
{
long long sum = 0;
rep(i,N){
if(sum + b[i] >= K){
ri = i;
rj = K - sum;
as += c[i] * (K-sum);
as %= M;
break;
}
as+= c[i]*b[i];
as %= M;
sum += b[i];
}
}
long long ans = 0;
while(ri < N){
//cout<<li<<' '<<lj<<' '<<ri<<' '<<rj<<endl;
long long num = min(b[ri]-rj,b[li]-1-lj)+1;
long long diff = c[ri] - c[li];
diff %= M;
if(diff<0)diff += M;
//cout<<as<<' '<<num<<' '<<diff<<endl;
ans += floor_sum(num,M,diff,as+M) - floor_sum(num,M,diff,as+M-1);
as += (num) * diff;
as %= M;
if(rj + num > b[ri]){
as -= b[ri];
if(ri + 1 == N)break;
as += b[ri+1];
as %= M;
if(as<0)as += M;
}
lj += num;
rj += num;
if(lj > b[li]-1){
li++;
lj = 0;
}
if(rj > b[ri]){
ri++;
rj = 1;
}
}
cout<<ans<<endl;
return 0;
}
沙耶花