-
[PS] 백준 17390번: 이건 꼭 풀어야 해! (입출력 관련)문제해결 2023. 11. 9. 16:40
엄청 쉬운 문제인데 입출력 관련 이슈를 깨달아서 블로그 쓴다.
아래 코드로 시간초과가 나는데 30만개를 정렬만 해주는 코드가 1초가 넘을리가 없고 너무 이상했다.
#include <bits/stdc++.h> using namespace std; #define FOR(i, n) for(int i = 0; i < int(n); i++) #define endl "\n" int N, Q; int arr[300'000]; int sum[300'000]; int main() { cin >> N >> Q; FOR(i, N) cin >> arr[i]; sort(&arr[0], &arr[N]); sum[0] = arr[0]; for(int i = 1; i < N; i++) sum[i] = sum[i - 1] + arr[i]; FOR(i, Q) { int begin, end; cin >> begin >> end; begin -= 1, end -= 1; cout << sum[end] - (begin - 1 < 0 ? 0 : sum[begin - 1]) << endl; } return 0; }
그래서 혹시 몰라서
cin.tie(NULL)->sync_with_stdio(false);
이걸 추가해주니 바로 통과되었다.
#include <bits/stdc++.h> using namespace std; #define FOR(i, n) for(int i = 0; i < int(n); i++) #define endl "\n" int N, Q; int arr[300'000]; int sum[300'000]; int main() { cin.tie(NULL)->sync_with_stdio(false); cin >> N >> Q; FOR(i, N) cin >> arr[i]; sort(&arr[0], &arr[N]); sum[0] = arr[0]; for(int i = 1; i < N; i++) sum[i] = sum[i - 1] + arr[i]; FOR(i, Q) { int begin, end; cin >> begin >> end; begin -= 1, end -= 1; cout << sum[end] - (begin - 1 < 0 ? 0 : sum[begin - 1]) << endl; } return 0; }
인풋을 미리 다 담아두고 하나씩 불러오도록 이렇게 처리해보니깐 이건 시간초과가 안뜨긴 하는데,
이전 코드가 0.1초 걸렸던거에 비해 0.4초나 걸렸다.
cin.tie(NULL)->sync_with_stdio(false);
앞으로 이거 꼭 써야겠다.
#include <bits/stdc++.h> using namespace std; #define FOR(i, n) for(int i = 0; i < int(n); i++) #define endl "\n" int N, Q; int arr[300'000]; int sum[300'000]; vector<pair<int, int>> vpi; int main() { cin >> N >> Q; FOR(i, N) cin >> arr[i]; FOR(i, Q) { pair<int, int> p; cin >> p.first >> p.second; vpi.push_back(p); } sort(&arr[0], &arr[N]); sum[0] = arr[0]; for(int i = 1; i < N; i++) sum[i] = sum[i - 1] + arr[i]; FOR(i, Q) { auto [begin, end] = vpi[i]; begin -= 1, end -= 1; cout << sum[end] - (begin - 1 < 0 ? 0 : sum[begin - 1]) << endl; } return 0; }
'문제해결' 카테고리의 다른 글
[PS] 백준 9935번: 문자열 폭발 (0) 2023.11.20 [PS] 백준 11689번: GCD(n, k) = 1 (1) 2023.11.20 [PS] 백준 1016번: 제곱 ㄴㄴ 수 (0) 2023.11.09 [PS] 백준 1882번: 분수 찾기, 30449번: Reafy 수열 (0) 2023.11.07 [PS] 백준 13908번: 비밀번호 (1) 2023.11.02