수열의 길이가 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


'BOJ' 카테고리의 다른 글

14889 스타트와 링크  (0) 2017.10.26
14888 연산자 끼워넣기  (0) 2017.10.26
8068 Water  (0) 2017.10.03
7579 앱  (0) 2017.10.03
6679 싱기한 네자리 숫자  (0) 2017.10.03

+ Recent posts