답안 #485064

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
485064 2021-11-06T02:18:06 Z socho Fire (JOI20_ho_t5) C++14
6 / 100
152 ms 21084 KB
/*
 Going for Subtask 2
*/
#include <bits/stdc++.h>
using namespace std;
void fast() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
}
void ran() {
	srand(chrono::steady_clock::now().time_since_epoch().count());
}
long long get_rand() {
	long long a = rand();
	long long b = rand();
	return a * (RAND_MAX + 1ll) + b;
}
void usaco() {
	freopen("problem.in", "r", stdin); 
	freopen("problem.out", "w", stdout);
}
template<typename T>
using min_pq = priority_queue<T, vector<T>, greater<T>>;
#define endl '\n'
// #define double long double
#define int long long
// const int MOD = 1000 * 1000 * 1000 + 7;
// const int MOD = 998244353;
// #define cerr if(0) cerr
#define debug(x) cerr << #x << ": " << x << endl;

int n, q;
const int MXN = 200005;
int arr[MXN];
int narr[MXN];
int seg[MXN * 4];

void build(int ind, int l, int r) {
	if (l == r) {
		seg[ind] = arr[l];
		return;
	}
	int m = (l + r) / 2;
	build(ind*2, l, m);
	build(ind*2+1, m+1, r);
	seg[ind] = max(seg[ind*2], seg[ind*2+1]);
}

int query(int ind, int l, int r, int ql, int qr) {
	if (ql <= l && r <= qr) return seg[ind];
	if (ql > r || qr < l) return INT_MIN;
	int m = (l + r) / 2;
	return max(query(ind*2, l, m, ql, qr), query(ind*2+1, m+1, r, ql, qr));
}

signed main() {

	ran(); fast();

	cin >> n >> q;
	for (int i=1; i<=n; i++) cin >> arr[i];
	
	build(1, 1, n);
	
	int tm = -1;
	
	vector<pair<int, pair<int, int>>> proc;
	for (int i=0; i<q; i++) {
		int t, l, r;
		cin >> t >> l >> r;
		proc.push_back({t, {l, r}});
		tm = t;
	}
	
	for (int i=1; i<=n; i++) {
		narr[i] = query(1, 1, n, max(1ll, i - tm), i);
		narr[i] += narr[i-1];
	}
	
	for (auto x: proc) {
		int l = x.second.first, r = x.second.second;
		cout << narr[r] - narr[l-1] << endl;
	}
	

}

Compilation message

ho_t5.cpp: In function 'void usaco()':
ho_t5.cpp:18:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |  freopen("problem.in", "r", stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
ho_t5.cpp:19:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  freopen("problem.out", "w", stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 116 ms 20584 KB Output is correct
3 Correct 111 ms 20644 KB Output is correct
4 Correct 130 ms 20820 KB Output is correct
5 Correct 128 ms 20692 KB Output is correct
6 Correct 133 ms 20420 KB Output is correct
7 Correct 152 ms 20844 KB Output is correct
8 Correct 128 ms 20732 KB Output is correct
9 Correct 124 ms 20900 KB Output is correct
10 Correct 129 ms 20728 KB Output is correct
11 Correct 120 ms 21084 KB Output is correct
12 Correct 125 ms 20524 KB Output is correct
13 Correct 133 ms 20516 KB Output is correct
14 Correct 120 ms 20480 KB Output is correct
15 Correct 124 ms 20572 KB Output is correct
16 Correct 135 ms 20452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 124 ms 19800 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 119 ms 17308 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -