BOJ
14648 쿼리 맛보기
공부정리
2017. 10. 3. 03:45
수열의 길이가 1000까지이므로 그냥 for문으로 모두 구해도 TLE가 나지 않는다.
수열의 각 값이 int범위를 넘지 않는다고 해서 합도 int범위 내에 있다는 것은 아니므로 long long으로 처리해야 한다.
<코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h> #include <iostream> #include <algorithm> using namespace std; int q, ar[1001], s, a, b, c, d, i; long long n; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> q; for (i = 1; i <= n; i++) cin >> ar[i]; for (i = 0; i < q; i++) { cin >> s; s--; n = 0; cin >> a >> b; if (s) for (cin >> c >> d; c <= d; c++) n -= ar[c]; else swap(ar[a], ar[b]); for (; a <= b; a++) n += ar[a]; cout << n << '\n'; } return 0; } | cs |