結果
| 問題 |
No.2931 Shibuya 109
|
| コンテスト | |
| ユーザー |
hitonanode
|
| 提出日時 | 2024-10-12 22:10:46 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 170 ms / 4,000 ms |
| コード長 | 714 bytes |
| コンパイル時間 | 962 ms |
| コンパイル使用メモリ | 88,508 KB |
| 実行使用メモリ | 7,168 KB |
| 最終ジャッジ日時 | 2024-10-12 22:10:59 |
| 合計ジャッジ時間 | 5,083 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 11 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
#define FOR(i, begin, end) for(int i=(begin),i##_end_=(end);i<i##_end_;i++)
#define REP(i, n) FOR(i,0,n)
int main() {
cin.tie(nullptr), ios::sync_with_stdio(false);
int N, Q;
cin >> N >> Q;
vector<int> A(N);
for (int &a : A) cin >> a;
vector<int> sum9(N + 1);
REP(i, N) sum9[i + 1] = sum9[i] + (A[i] == 9);
vector<int> ones;
REP(i, N) if (A[i] == 1) ones.push_back(i);
while (Q--) {
int l, r;
cin >> l >> r;
--l;
int ret = sum9.at(r) - sum9.at(l);
for (int i : ones) {
if (l <= i and i < r) ret += r - 1 - i;
}
cout << ret << '\n';
}
}
hitonanode