結果
| 問題 |
No.2942 Sigma Music Game Level Problem
|
| コンテスト | |
| ユーザー |
pengin_2000
|
| 提出日時 | 2024-10-18 23:28:34 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 685 ms / 6,000 ms |
| コード長 | 1,335 bytes |
| コンパイル時間 | 1,716 ms |
| コンパイル使用メモリ | 30,720 KB |
| 実行使用メモリ | 25,728 KB |
| 最終ジャッジ日時 | 2024-11-15 20:21:31 |
| 合計ジャッジ時間 | 11,303 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 24 |
ソースコード
#include<stdio.h>
long long int seg[2][1000006], ss;
void update(long long int z, long long int x, long long int d)
{
x += ss - 1;
seg[z][x] += d;
while (x > 0)
{
x = (x - 1) / 2;
seg[z][x] = seg[z][2 * x + 1] + seg[z][2 * x + 2];
}
return;
}
long long int get(long long int z, long long int l, long long int r)
{
l += ss - 1;
r += ss - 1;
long long int res = 0;
while (l < r)
{
if (l % 2 == 0)
res += seg[z][l];
l /= 2;
if (r % 2 > 0)
res += seg[z][r];
r = r / 2 - 1;
}
if (l == r)
res += seg[z][l];
return res;
}
long long int L[1000006];
long long int a[1000006];
int main()
{
long long int n, q;
scanf("%lld %lld %lld", &n, &q, &L[0]);
long long int i;
for (i = 0; i < n; i++)
scanf("%lld", &a[i]);
for (ss = 1; ss < 200005; ss *= 2);
for (i = 0; i < 2 * ss - 1; i++)
seg[0][i] = seg[1][i] = 0;
for (i = 0; i < n; i++)
{
update(0, a[i], 1);
update(1, a[i], a[i]);
}
long long int t, l, r, cnt = 0;
for (i = 1; i <= q; i++)
{
L[i] = L[i - 1];
scanf("%lld", &t);
if (t == 1)
{
scanf("%lld", &l);
update(0, l, 1);
update(1, l, l);
}
else if (t == 2)
{
scanf("%lld %lld", &l, &r);
printf("%lld %lld\n", get(0, l, r), get(1, l, r));
cnt++;
}
else
{
scanf("%lld", &l);
L[i] = l;
}
}
if (cnt == 0)
printf("Not Found!\n");
return 0;
}
pengin_2000