# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
635637 | shafinalam | Simple game (IZhO17_game) | C++14 | 5 ms | 8408 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define MAX 1000010
using namespace std;
class FenwickTree
{
public:
void update(int i, int v)
{
for( ; i > 0 ; i -= i&-i)
BIT[ i ] += v;
}
void sumInterval(int l, int r, int v)
{
update(r , v);
if(l > 0) update(l - 1 , -v);
}
int query(int i)
{
int ans = 0;
for( ; i < MAX ; i += i & -i)
ans += BIT[ i ];
return ans;
}
FenwickTree() { memset(BIT , 0 , sizeof(BIT)); }
private:
int BIT[MAX];
};
int n, m;
int n1, n2, n3;
int v[MAX];
FenwickTree BIT;
void update(int i, int k)
{
if(2 <= i && i <= n)
BIT.sumInterval(min(v[ i ] , v[i - 1]) , max(v[i] , v[i - 1]) , k);
}
int main()
{
scanf("%d %d",&n,&m);
assert(n <= 1000);
assert(m <= 1000);
for(int g = 1 ; g <= n ; g++)
scanf("%d",&v[g]);
for(int g = 1 ; g <= n ; g++)
update(g , 1);
for(int g = 0 ; g < m ; g++)
{
scanf("%d %d",&n1,&n2);
if(n1 == 1)
{
scanf("%d",&n3);
update(n2 , -1);
update(n2 + 1 , -1);
v[ n2 ] = n3;
update(n2 , 1);
update(n2 + 1 , 1);
}
else printf("%d\n",BIT.query( n2 ));
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |