답안 #275545

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
275545 2020-08-20T06:28:39 Z 송준혁(#5101) Happiness (Balkan15_HAPPINESS) C++17
60 / 100
2000 ms 272344 KB
#include "happiness.h"
#include <bits/stdc++.h>
#define INF (1ll<<61)
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;

LL M;
int num=1, lc[20202020], rc[20202020];
LL T[20202020], lz[20202020];

void upd(int id, LL s, LL e, LL ts, LL te, LL v){
	if (e < ts || te < s) return;
	if (ts <= s && e <= te){
		if (ts == te){
			if (v < 0){
				if (!lz[id]) T[id] += v;
				lz[id]++;
			}
			else{
				lz[id]--;
				if (!lz[id]) T[id] += v;
			}
			return;
		}
		T[id] += v;
		if (s != e) lz[id] += v;
		return;
	}
	LL m=s+e>>1;
	if (!lc[id] && ts <= m) lc[id]=++num, T[num]=INF;
	if (!rc[id] && te > m) rc[id]=++num, T[num]=INF;
	upd(lc[id], s, m, ts, te, v);
	upd(rc[id], m+1, e, ts, te, v);
	T[id] = min(T[lc[id]], T[rc[id]]) + lz[id];
}

bool init(int N, long long _M, long long A[]) {
	M = _M+3;
	T[0]=T[1]=INF;
	for (int i=0; i<N; i++){
		upd(1, 1, M, A[i]+1, M, A[i]);
		upd(1, 1, M, A[i], A[i], -INF-A[i]);
	}
	return T[1]>=-1;
}

bool is_happy(int e, int N, long long A[]) {
	if (e>0){
		for (int i=0; i<N; i++){
			upd(1, 1, M, A[i]+1, M, A[i]);
			upd(1, 1, M, A[i], A[i], -INF-A[i]);
		}
	}
	else{
		for (int i=0; i<N; i++){
			upd(1, 1, M, A[i]+1, M, -A[i]);
			upd(1, 1, M, A[i], A[i], INF+A[i]);
		}
	}
	return T[1]>=-1;
}

Compilation message

happiness.cpp: In function 'void upd(int, LL, LL, LL, LL, LL)':
happiness.cpp:30:8: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   30 |  LL m=s+e>>1;
      |       ~^~
grader.cpp: In function 'int main()':
grader.cpp:16:12: warning: unused variable 'max_code' [-Wunused-variable]
   16 |  long long max_code;
      |            ^~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 4 ms 1536 KB Output is correct
7 Correct 4 ms 1536 KB Output is correct
8 Correct 41 ms 10424 KB Output is correct
9 Correct 42 ms 10496 KB Output is correct
10 Correct 36 ms 10104 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 637 ms 22112 KB Output is correct
7 Correct 618 ms 22012 KB Output is correct
8 Correct 583 ms 22112 KB Output is correct
9 Correct 933 ms 27632 KB Output is correct
10 Correct 1035 ms 29704 KB Output is correct
11 Correct 431 ms 16980 KB Output is correct
12 Correct 451 ms 17104 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 4 ms 1536 KB Output is correct
7 Correct 4 ms 1536 KB Output is correct
8 Correct 41 ms 10424 KB Output is correct
9 Correct 42 ms 10496 KB Output is correct
10 Correct 36 ms 10104 KB Output is correct
11 Correct 637 ms 22112 KB Output is correct
12 Correct 618 ms 22012 KB Output is correct
13 Correct 583 ms 22112 KB Output is correct
14 Correct 933 ms 27632 KB Output is correct
15 Correct 1035 ms 29704 KB Output is correct
16 Correct 431 ms 16980 KB Output is correct
17 Correct 451 ms 17104 KB Output is correct
18 Correct 1427 ms 161628 KB Output is correct
19 Correct 1403 ms 168068 KB Output is correct
20 Execution timed out 2045 ms 272344 KB Time limit exceeded
21 Halted 0 ms 0 KB -