結果
問題 |
No.3094 Stapler
|
ユーザー |
|
提出日時 | 2025-04-04 10:39:24 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 177 ms / 2,000 ms |
コード長 | 1,634 bytes |
コンパイル時間 | 972 ms |
コンパイル使用メモリ | 28,368 KB |
実行使用メモリ | 13,440 KB |
最終ジャッジ日時 | 2025-06-20 02:29:14 |
合計ジャッジ時間 | 9,364 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 72 |
コンパイルメッセージ
main.c: In function ‘main’: main.c:9:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 9 | scanf("%d", &N); | ^~~~~~~~~~~~~~~ main.c:10:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 10 | scanf("%d", &Q); | ^~~~~~~~~~~~~~~ main.c:29:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 29 | scanf("%d", &t); | ^~~~~~~~~~~~~~~ main.c:31:25: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 31 | scanf("%d %d", &l, &r); | ^~~~~~~~~~~~~~~~~~~~~~ main.c:59:25: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 59 | scanf("%d", &q); | ^~~~~~~~~~~~~~~
ソースコード
#include <stdio.h> #define SIZE 1000 #define NUM 1000 int main() { int i, N, Q; scanf("%d", &N); scanf("%d", &Q); int bn, bl[NUM], br[NUM]; for (bn = 0, i = 0; 1; i = br[bn++]) { bl[bn] = i; br[bn] = i + SIZE; if (br[bn] >= N) { br[bn] = N; break; } } br[++bn] = N + 1; int h, k, ans = N, A[1000001] = {}, block[NUM][2], t, L[1000001], R[1000001], l, r, q; for (k = 0; k < bn; k++) { block[k][0] = 0; block[k][1] = br[k] - bl[k]; } for (h = 1; h <= Q; h++) { scanf("%d", &t); if (t == 1) { scanf("%d %d", &l, &r); L[h] = l; R[h] = r; k = l / SIZE; for (i = l; i < br[k] && i < r; i++) { if (A[i] == 0) { block[k][1]--; if (block[k][0] == 0) ans--; } A[i]++; } if (i < r) { for (k++; br[k] <= r; i = br[k++]) { if (block[k][0] == 0) ans -= block[k][1]; block[k][0]++; } if (i < r) { for (; i < r; i++) { if (A[i] == 0) { block[k][1]--; if (block[k][0] == 0) ans--; } A[i]++; } } } } else if (t == 2) { scanf("%d", &q); l = L[q]; r = R[q]; k = l / SIZE; for (i = l; i < br[k] && i < r; i++) { A[i]--; if (A[i] == 0) { block[k][1]++; if (block[k][0] == 0) ans++; } } if (i < r) { for (k++; br[k] <= r; i = br[k++]) { block[k][0]--; if (block[k][0] == 0) ans += block[k][1]; } if (i < r) { for (; i < r; i++) { A[i]--; if (A[i] == 0) { block[k][1]++; if (block[k][0] == 0) ans++; } } } } } else { printf("%d\n", ans); } } fflush(stdout); return 0; }