Submission #39539

# Submission time Handle Problem Language Result Execution time Memory
39539 2018-01-16T10:02:41 Z 14kg 역사적 조사 (JOI14_historical) C++11
40 / 100
4000 ms 15328 KB
#include <stdio.h>
#include <algorithm>
#include <set>
#include <map>
#define N 100001
#define NN 262144
#define SQ 300
#define max2(x,y) (x>y?x:y)

using namespace std;
typedef pair<pair<int, int>, int> ppi;
int n, q_len, M_len, nn, in[N], Md[N];
long long tree[NN], out[N];
ppi Q[N];
set<int> S;
map<int, int> M;

bool cmp(ppi x, ppi y) {
	pair<int,int> tx = { x.first.first / SQ,x.first.second / SQ };
	pair<int,int> ty = { y.first.first / SQ,y.first.second / SQ };
	return x < y;
}
void Push(int x, long long num) {
	int temp;
	tree[nn + x - 1] += num;
	for (int lev = (nn + x - 1) / 2; lev; lev /= 2) {
		temp = tree[lev];
		tree[lev] = max2(tree[lev * 2], tree[lev * 2 + 1]);
		if (temp == tree[lev]) break;
	}
}
int main() {
	scanf("%d %d", &n, &q_len);
	for (int i = 1; i <= n; i++) scanf("%d", &in[i]), S.insert(in[i]);
	for (auto i : S) M[i] = ++M_len;
	for (int i = 1; i <= n; i++) Md[i] = M[in[i]];

	for (nn = 1; nn < M_len; nn *= 2);
	for (int i = 1; i <= q_len; i++) {
		scanf("%d %d", &Q[i].first.first, &Q[i].first.second);
		Q[i].second = i;
	}
	sort(Q + 1, Q + q_len + 1, cmp);
	
	int l = 1, r = 0;
	for (int i = 1; i <= q_len; i++) {
		int x = Q[i].first.first, y = Q[i].first.second;
		while (r < y) Push(Md[r + 1], in[r + 1]), r++;
		while (l > x) Push(Md[l - 1], in[l - 1]), l--;
		while (r > y) Push(Md[r], -in[r]), r--;
		while (l < x) Push(Md[l], -in[l]), l++;
		out[Q[i].second] = tree[1];
	}
	for (int i = 1; i <= q_len; i++) printf("%lld\n", out[i]);
}

Compilation message

historic.cpp: In function 'bool cmp(ppi, ppi)':
historic.cpp:19:16: warning: variable 'tx' set but not used [-Wunused-but-set-variable]
  pair<int,int> tx = { x.first.first / SQ,x.first.second / SQ };
                ^
historic.cpp:20:16: warning: variable 'ty' set but not used [-Wunused-but-set-variable]
  pair<int,int> ty = { y.first.first / SQ,y.first.second / SQ };
                ^
historic.cpp: In function 'int main()':
historic.cpp:33:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &q_len);
                            ^
historic.cpp:34:67: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for (int i = 1; i <= n; i++) scanf("%d", &in[i]), S.insert(in[i]);
                                                                   ^
historic.cpp:40:56: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &Q[i].first.first, &Q[i].first.second);
                                                        ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 5956 KB Output is correct
2 Correct 0 ms 5956 KB Output is correct
3 Correct 0 ms 5956 KB Output is correct
4 Correct 0 ms 5956 KB Output is correct
5 Correct 0 ms 5956 KB Output is correct
6 Correct 0 ms 5956 KB Output is correct
7 Correct 0 ms 5956 KB Output is correct
8 Correct 0 ms 5956 KB Output is correct
9 Correct 0 ms 5956 KB Output is correct
10 Correct 0 ms 5956 KB Output is correct
11 Correct 0 ms 5956 KB Output is correct
12 Correct 0 ms 5956 KB Output is correct
13 Correct 0 ms 5956 KB Output is correct
14 Correct 0 ms 5956 KB Output is correct
15 Correct 0 ms 5956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 5956 KB Output is correct
2 Correct 0 ms 5956 KB Output is correct
3 Correct 3 ms 5956 KB Output is correct
4 Correct 13 ms 5956 KB Output is correct
5 Correct 76 ms 5956 KB Output is correct
6 Correct 156 ms 5956 KB Output is correct
7 Correct 163 ms 5956 KB Output is correct
8 Correct 149 ms 5956 KB Output is correct
9 Correct 136 ms 5956 KB Output is correct
10 Correct 149 ms 6088 KB Output is correct
11 Correct 156 ms 6088 KB Output is correct
12 Correct 149 ms 6088 KB Output is correct
13 Correct 159 ms 6088 KB Output is correct
14 Correct 159 ms 6088 KB Output is correct
15 Correct 163 ms 6088 KB Output is correct
16 Correct 129 ms 5956 KB Output is correct
17 Correct 49 ms 5956 KB Output is correct
18 Correct 153 ms 6088 KB Output is correct
19 Correct 163 ms 6088 KB Output is correct
20 Correct 166 ms 6220 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 5956 KB Output is correct
2 Correct 0 ms 5956 KB Output is correct
3 Correct 0 ms 5956 KB Output is correct
4 Correct 0 ms 5956 KB Output is correct
5 Correct 0 ms 6088 KB Output is correct
6 Correct 0 ms 5956 KB Output is correct
7 Correct 3 ms 6088 KB Output is correct
8 Correct 6 ms 6220 KB Output is correct
9 Correct 16 ms 6616 KB Output is correct
10 Correct 9 ms 5956 KB Output is correct
11 Correct 89 ms 5956 KB Output is correct
12 Correct 36 ms 5956 KB Output is correct
13 Correct 73 ms 6616 KB Output is correct
14 Correct 139 ms 9784 KB Output is correct
15 Correct 236 ms 11368 KB Output is correct
16 Correct 213 ms 15328 KB Output is correct
17 Correct 39 ms 5956 KB Output is correct
18 Correct 49 ms 5956 KB Output is correct
19 Correct 133 ms 15328 KB Output is correct
20 Correct 106 ms 15328 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 599 ms 5956 KB Output is correct
2 Correct 2543 ms 6088 KB Output is correct
3 Execution timed out 4000 ms 6484 KB Execution timed out
4 Halted 0 ms 0 KB -