# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
6113 | kriii | 즐거운 채소 기르기 (JOI14_growing) | C++98 | 316 ms | 19888 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
#include <map>
using namespace std;
int N,D[300030],L[300030],R[300030],B[300030],C;
map<int, int> chk;
int main()
{
scanf ("%d",&N);
for (int i=0;i<N;i++) scanf ("%d",&D[i]), chk[D[i]] = 0;
for (map<int,int>::iterator I = chk.begin(); I != chk.end(); I++) I->second = ++C;
for (int i=0;i<N;i++) D[i] = chk[D[i]];
for (int i=0;i<N;i++){
L[i] = i;
for (int x=D[i];x;x-=x&(-x)) L[i] -= B[x];
for (int x=D[i];x<=C;x+=x&(-x)) B[x]++;
}
for (int i=1;i<=C;i++) B[i] = 0;
for (int i=N-1;i>=0;i--){
R[i] = N-1-i;
for (int x=D[i];x;x-=x&(-x)) R[i] -= B[x];
for (int x=D[i];x<=C;x+=x&(-x)) B[x]++;
}
long long ans = 0;
for (int i=0;i<N;i++) ans += L[i] < R[i] ? L[i] : R[i];
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |