結果
問題 |
No.989 N×Mマス計算(K以上)
|
ユーザー |
![]() |
提出日時 | 2020-02-25 23:55:00 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 37 ms / 2,000 ms |
コード長 | 900 bytes |
コンパイル時間 | 213 ms |
コンパイル使用メモリ | 30,208 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 14:39:38 |
合計ジャッジ時間 | 1,147 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include<stdio.h> #include<stdlib.h> int asc(const void* a, const void* b) { if (*(long long int*)a < * (long long int*)b)return 1; if (*(long long int*)a > *(long long int*)b)return -1; return 0; } int main() { long long int n, m, k; scanf("%lld %lld %lld", &n, &m, &k); char op; scanf(" %c", &op); long long int i; long long int a[100005], b[100005]; for (i = 0; i < m; i++) scanf("%lld", &b[i]); for (i = 0; i < n; i++) scanf("%lld", &a[i]); qsort(b, m, sizeof(long long int), asc); long long int ans = 0; long long int min, mid, max; for (i = 0; i < n; i++) { min = -1; max = m; while (max - min > 1) { mid = (max + min) / 2; if (op == '+') { if (a[i] + b[mid] < k) max = mid; else min = mid; } else { if (a[i] * b[mid] < k) max = mid; else min = mid; } } ans += max; } printf("%lld\n", ans); return 0; }