# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
50337 | 2018-06-10T08:43:46 Z | gnoor | Sterilizing Spray (JOI15_sterilizing) | C++17 | 217 ms | 6572 KB |
#include <cstdio> #include <algorithm> #include <vector> #include <map> using namespace std; map<int,int> st; long long bit[100100]; void add(int idx,int val) { while (idx<100100) { bit[idx]+=val; idx+=(idx&-idx); } } long long get(int idx) { long long sum=0; while (idx) { sum+=bit[idx]; idx-=(idx&-idx); } return sum; } int tbl[100100]; int main () { int n,q,k; scanf("%d%d%d",&n,&q,&k); int x; for (int i=1;i<=n;i++) { scanf("%d",&x); tbl[i]=x; //st.insert(make_pair(i,x)); st[i]=x; } int a,b,c; for (int i=0;i<q;i++) { scanf("%d%d%d",&a,&b,&c); if (k==1) { if (a==1) { add(b,c-tbl[b]); tbl[b]=c; } else if (a==3) { printf("%lld\n",get(c)-get(b-1)); } continue; } if (a==1) { //auto &now = st.lower_bound(make_pair(b,-1)); if (c==0) { st.erase(b); } else { st[b]=c; } } else if (a==2) { //if (k==1) continue; auto xx=st.lower_bound(b); for(;xx->first<=c&&xx!=st.end();) { xx->second/=k; if (xx->second==0) { auto tmp=xx; xx++; st.erase(tmp); } else { xx++; } } } else if (a==3) { auto xx=st.lower_bound(b); long long ans=0; for (;xx->first<=c&&xx!=st.end();xx++) { ans+=xx->second; } printf("%lld\n",ans); } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 456 KB | Output is correct |
2 | Incorrect | 2 ms | 456 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 69 ms | 3736 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 20 ms | 3736 KB | Output is correct |
2 | Correct | 36 ms | 3736 KB | Output is correct |
3 | Correct | 34 ms | 3736 KB | Output is correct |
4 | Correct | 51 ms | 3736 KB | Output is correct |
5 | Correct | 88 ms | 5684 KB | Output is correct |
6 | Correct | 89 ms | 5804 KB | Output is correct |
7 | Incorrect | 88 ms | 6572 KB | Output isn't correct |
8 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 80 ms | 6572 KB | Output is correct |
2 | Correct | 85 ms | 6572 KB | Output is correct |
3 | Correct | 97 ms | 6572 KB | Output is correct |
4 | Correct | 86 ms | 6572 KB | Output is correct |
5 | Correct | 139 ms | 6572 KB | Output is correct |
6 | Correct | 152 ms | 6572 KB | Output is correct |
7 | Correct | 126 ms | 6572 KB | Output is correct |
8 | Correct | 167 ms | 6572 KB | Output is correct |
9 | Correct | 217 ms | 6572 KB | Output is correct |
10 | Correct | 150 ms | 6572 KB | Output is correct |
11 | Correct | 133 ms | 6572 KB | Output is correct |
12 | Correct | 213 ms | 6572 KB | Output is correct |