# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
171312 | 2019-12-28T10:19:55 Z | arnold518 | 코끼리 (Dancing Elephants) (IOI11_elephants) | C++14 | 2397 ms | 4172 KB |
#include "elephants.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 150000; const int SQ = 380; int N, L, A[MAXN+10], B[MAXN+10], S[MAXN+10]; pii C[MAXN+10]; int P[MAXN/SQ+10][SQ+10], Q[MAXN/SQ+10][SQ+10], R[MAXN/SQ+10][SQ+10], sz[MAXN/SQ+10]; void calc(int num) { int i, j; sort(P[num], P[num]+sz[num]); for(i=0; i<=sz[num]; i++) Q[num][i]=R[num][i]=0; for(i=sz[num]-1; i>=0; i--) { int pos=upper_bound(P[num], P[num]+sz[num], P[num][i]+L)-P[num]; if(pos==sz[num]) Q[num][i]=P[num][i]+L, R[num][i]=1; else Q[num][i]=Q[num][pos], R[num][i]=R[num][pos]+1; } S[num]=P[num][0]; } void make() { int i, j; for(i=0; i<N; i++) C[i]={A[i], i}; sort(C, C+N); for(i=0; i<=(N-1)/SQ; i++) sz[i]=0; for(i=0; i<N; i++) P[i/SQ][sz[i/SQ]++]=C[i].first, B[C[i].second]=i/SQ; for(i=0; i<=(N-1)/SQ; i++) calc(i); } void pop(int p) { int i, j; int num=B[p]; for(i=0; i<sz[num]; i++) if(P[num][i]==A[p]) break; int pos=i; for(i=pos+1; i<sz[num]; i++) P[num][i-1]=P[num][i]; sz[num]--; calc(num); B[p]=-1; } void push(int p, int x) { int i, j; int num=upper_bound(S, S+(N-1)/SQ+1, x)-S-1; if(num==-1) num=0; P[num][sz[num]++]=x; calc(num); B[p]=num; } void init(int _N, int _L, int *X) { int i, j; N=_N; L=_L; for(i=0; i<N; i++) A[i]=X[i]; make(); } int query() { int i, j; int bef=-1; int ans=0; for(i=0; i<=(N-1)/SQ; i++) { int pos=upper_bound(P[i], P[i]+sz[i], bef)-P[i]; if(pos==sz[i]) continue; ans+=R[i][pos]; bef=Q[i][pos]; } return ans; } int qcnt=0; int update(int p, int y) { int i, j; pop(p); push(p, y); A[p]=y; qcnt++; if(qcnt==SQ) qcnt=0, make(); return query(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 376 KB | Output is correct |
4 | Correct | 3 ms | 376 KB | Output is correct |
5 | Correct | 3 ms | 376 KB | Output is correct |
6 | Correct | 4 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 376 KB | Output is correct |
4 | Correct | 3 ms | 376 KB | Output is correct |
5 | Correct | 3 ms | 376 KB | Output is correct |
6 | Correct | 4 ms | 376 KB | Output is correct |
7 | Correct | 2029 ms | 1424 KB | Output is correct |
8 | Correct | 2154 ms | 2552 KB | Output is correct |
9 | Correct | 2397 ms | 4172 KB | Output is correct |
10 | Correct | 2076 ms | 3960 KB | Output is correct |
11 | Correct | 2001 ms | 3904 KB | Output is correct |
12 | Incorrect | 64 ms | 3960 KB | Output isn't correct |
13 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 376 KB | Output is correct |
4 | Correct | 3 ms | 376 KB | Output is correct |
5 | Correct | 3 ms | 376 KB | Output is correct |
6 | Correct | 4 ms | 376 KB | Output is correct |
7 | Correct | 2029 ms | 1424 KB | Output is correct |
8 | Correct | 2154 ms | 2552 KB | Output is correct |
9 | Correct | 2397 ms | 4172 KB | Output is correct |
10 | Correct | 2076 ms | 3960 KB | Output is correct |
11 | Correct | 2001 ms | 3904 KB | Output is correct |
12 | Incorrect | 64 ms | 3960 KB | Output isn't correct |
13 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 376 KB | Output is correct |
4 | Correct | 3 ms | 376 KB | Output is correct |
5 | Correct | 3 ms | 376 KB | Output is correct |
6 | Correct | 4 ms | 376 KB | Output is correct |
7 | Correct | 2029 ms | 1424 KB | Output is correct |
8 | Correct | 2154 ms | 2552 KB | Output is correct |
9 | Correct | 2397 ms | 4172 KB | Output is correct |
10 | Correct | 2076 ms | 3960 KB | Output is correct |
11 | Correct | 2001 ms | 3904 KB | Output is correct |
12 | Incorrect | 64 ms | 3960 KB | Output isn't correct |
13 | Halted | 0 ms | 0 KB | - |