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