結果
問題 | No.2408 Lakes and Fish |
ユーザー | pengin_2000 |
提出日時 | 2023-08-11 21:29:42 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 58 ms / 2,000 ms |
コード長 | 670 bytes |
コンパイル時間 | 415 ms |
コンパイル使用メモリ | 29,824 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-18 15:27:06 |
合計ジャッジ時間 | 2,268 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
#include<stdio.h> long long int l[100005]; int main() { long long int n, m; scanf("%lld %lld", &n, &m); long long int i; for (i = 0; i < n; i++) scanf("%lld", &l[i + 1]); l[n + 1] = 1e18; l[0] = -1e18; long long int ans = 0; long long int f, b, w, dist; long long int min, mid, max; for (i = 0; i < m; i++) { scanf("%lld %lld %lld", &f, &b, &w); min = -1; max = n + 1; while (max - min > 1) { mid = (max + min) / 2; if (l[mid] > f) max = mid; else min = mid; } dist = f - l[min]; if (dist > l[max] - f) dist = l[max] - f; if (b > w - dist) ans += b; else ans += w - dist; } printf("%lld\n", ans); return 0; }