結果
問題 | No.2359 A in S ? |
ユーザー | 👑 ygussany |
提出日時 | 2023-06-04 19:44:13 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 179 ms / 2,000 ms |
コード長 | 917 bytes |
コンパイル時間 | 201 ms |
コンパイル使用メモリ | 30,720 KB |
実行使用メモリ | 5,632 KB |
最終ジャッジ日時 | 2024-12-30 21:32:16 |
合計ジャッジ時間 | 4,641 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <stdio.h> #define THR 200 int main() { int i, N, M, L[100001], R[100001], X[100001], Y[100001], A[100001]; scanf("%d %d", &N, &M); for (i = 1; i <= N; i++) scanf("%d %d %d %d", &(L[i]), &(R[i]), &(X[i]), &(Y[i])); for (i = 1; i <= M; i++) scanf("%d", &(A[i])); int j, ans[100001] = {}; static int imos[THR + 1][100001] = {}, tmp[THR + 1]; for (i = 1; i <= N; i++) { if (X[i] > THR) { for (j = (L[i] - Y[i] + X[i] - 1) / X[i] * X[i] + Y[i]; j <= R[i]; j += X[i]) ans[j]++; } else { j = (L[i] - Y[i] + X[i] - 1) / X[i] * X[i] + Y[i]; imos[X[i]][j]++; j = (R[i] - Y[i] + X[i]) / X[i] * X[i] + Y[i]; if (j <= 100000) imos[X[i]][j]--; } } for (i = 1; i <= THR; i++) { for (j = 0; j < i; j++) tmp[j] = 0; for (j = 1; j <= 100000; j++) { tmp[j%i] += imos[i][j]; ans[j] += tmp[j%i]; } } for (i = 1; i <= M; i++) printf("%d\n", ans[A[i]]); fflush(stdout); return 0; }