結果
問題 | No.2956 Substitute with Average |
ユーザー |
👑 |
提出日時 | 2024-11-08 22:38:57 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 266 ms / 3,000 ms |
コード長 | 609 bytes |
コンパイル時間 | 387 ms |
コンパイル使用メモリ | 30,464 KB |
実行使用メモリ | 49,152 KB |
最終ジャッジ日時 | 2024-11-08 22:39:03 |
合計ジャッジ時間 | 5,605 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
#include <stdio.h>int main(){int i, N, A[100001];scanf("%d", &N);for (i = 1; i <= N; i++) scanf("%d", &(A[i]));int k, sum, num[2][6000001];long long ans = (long long)N * (N - 1) / 2 + 1;for (k = 1; k <= 30; k++) {for (i = 0; i <= N * 60; i++) {num[0][i] = 0;num[1][i] = 0;}for (i = 1, sum = 0, num[0][N*30] = 1; i <= N; i++) {if (A[i] == k) ans -= num[0][sum + N * 30] - 1;else ans -= num[1][sum + A[i] - k + N * 30];sum += A[i] - k;num[0][sum + N * 30]++;if (A[i] == k) num[1][sum + N * 30]++;}}printf("%lld\n", ans);fflush(stdout);return 0;}