結果
| 問題 |
No.1093 区間の和 / Sum of Range
|
| ユーザー |
onsen_manjuuu
|
| 提出日時 | 2020-06-24 02:48:23 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 218 ms / 2,000 ms |
| コード長 | 858 bytes |
| コンパイル時間 | 1,881 ms |
| コンパイル使用メモリ | 177,688 KB |
| 実行使用メモリ | 8,960 KB |
| 最終ジャッジ日時 | 2024-07-03 19:48:21 |
| 合計ジャッジ時間 | 7,576 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 36 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
int n, k, q; cin >> n >> k;
vector<int> sum(n + 1), que, s;
for(int i = 1; i <= n; i++) {
int a; cin >> a;
sum[i] = sum[i - 1] + a;
}
cin >> q; que.resize(q);
for(int i = 0; i < n - k + 1; i++) s.emplace_back(sum[i + k] - sum[i]);
for(int i = 0; i < q; i++)cin >> que[i];
vector<int> ar;
{ //座圧
map<int,int> mp;
int cur = 0;
for(auto i : s)mp[i] = -1;
for(auto i : que)mp[i] = -1;
for(auto &i: mp)i.second = cur++;
for(auto &i: que)i = mp[i];
ar.resize(cur + 2);
for(auto i : s)ar[mp[i]]++;
cerr << cur << endl;
for(int i = 1; i < cur + 2; i++)ar[i] += ar[i - 1];
}
for(auto i : que) {
cout << ar[i] << endl;
}
}
onsen_manjuuu