๐Ÿ™‡โ€โ™€๏ธ[Silver I] ์ˆ˜์—ด - 13274

๋ฌธ์ œ ๋งํฌ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 3592 KB, ์‹œ๊ฐ„: 52 ms

๋ถ„๋ฅ˜

์ •๋ ฌ

์ œ์ถœ ์ผ์ž

2024๋…„ 6์›” 11์ผ 15:35:34

๋ฌธ์ œ ์„ค๋ช…

์ง€ํ›ˆ์ด๋Š” ์ˆ˜์—ด์„ ์ข‹์•„ํ•œ๋‹ค. ์ง€๊ธˆ ์ง€ํ›ˆ์ด๋Š” size ๊ฐ€ N ์ธ ์ˆ˜์—ด์„ ๊ฐ€์ง€๊ณ  ๋†€๊ณ  ์žˆ๋‹ค. ์ง€ํ›ˆ์ด๋Š” K ๊ฐœ์˜ ์ฟผ๋ฆฌ์— ๋”ฐ๋ผ ์ˆ˜์—ด์„ ๋ณ€ํ™”์‹œํ‚ฌ ๊ฒƒ์ธ๋ฐ, ์ฟผ๋ฆฌ์˜ ํ˜•์‹ ๋ฐ ์ž‘์—… ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • L R X : ์ˆ˜์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ A[1], A[2], โ€ฆ , A[N]์ด๋ผ ํ•˜์ž. ์šฐ์„  A[L], A[L+1], โ€ฆ , A[R]์— X ๋งŒํผ ๋”ํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ˆ˜์—ด์„ ๋‹ค์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์ฟผ๋ฆฌ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•˜๋ผ.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N ๊ณผ K ๊ฐ€ ๋„์–ด์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 100000, 1 โ‰ค K โ‰ค 1000)

๋‘˜์งธ ์ค„์— ์ ˆ๋Œ“๊ฐ’์ด 1018 ์ดํ•˜์ธ, ์ˆ˜์—ด์„ ์ด๋ฃจ๋Š” N ๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์…‹์งธ ์ค„๋ถ€ํ„ฐ K+2 ๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ฟผ๋ฆฌ L R X ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค L โ‰ค R โ‰ค N, |X| โ‰ค 109)

์ถœ๋ ฅ

์ฟผ๋ฆฌ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿš€ํ’€์ด

๋ฌธ์ œ์˜ ์š”๊ฑด๋Œ€๋กœ ์ž‘์—…์„ ํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€๋‚ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ˆ„์ ํ•ฉ์„ ๊ณ„์‚ฐํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ์ˆ˜์—ด์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
๊ตฌ๊ฐ„ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ: ๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ๊ตฌ๊ฐ„์— ๋”ํ•  ๊ฐ’์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
๋ˆ„์  ํ•ฉ ์ ์šฉ: ๋งˆ์ง€๋ง‰์— ๋ˆ„์  ํ•ฉ์„ ์ ์šฉํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์—์„œ ์œ„ ๊ตฌ๊ฐ„ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// ๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ
for (int i = 0; i < K; ++i) 
{
    int L, R;
    long long X;
    cin >> L >> R >> X;
    L--; R--; // 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜

    // delta ๋ฐฐ์—ด์— ๊ตฌ๊ฐ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ธฐ๋ก
    delta[L] += X;
    if (R + 1 < N) 
    {
        delta[R + 1] -= X;
    }
}

delta[R + 1] -= X;์„ ํ•ด์คŒ์œผ๋กœ์จ ๊ตฌ๊ฐ„ํ•ฉ์ด ๋๋‚ฌ์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

์‹ค์ œ ์ ์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค.

// ๋ˆ„์  ํ•ฉ ๊ณ„์‚ฐ ๋ฐ ์ ์šฉ
long long cumulative = 0;
for (int i = 0; i < N; ++i) 
{
    cumulative += delta[i];
    arr[i] += cumulative;
}

๋ณ€ํ™”๋Ÿ‰์ด ๊ณ„์† ๊ธฐ๋ก๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ์˜ ์š”๊ฑด์— ์„ฑ๋ฆฝํ•˜์—ฌ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๋ฉด ์›ํ•˜๋Š” ์ถœ๋ ฅ๊ฐ’์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

image

๐Ÿš€์ฝ”๋“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <climits>

using namespace std;

void solve()
{
    int N, K;
    cin >> N >> K;

    vector<long long> arr(N);
    for (int i = 0; i < N; ++i) 
    {
        cin >> arr[i];
    }

    // ์ˆ˜์—ด ์ •๋ ฌ
    sort(arr.begin(), arr.end());

    // ๋ˆ„์  ๋ณ€ํ™”๋Ÿ‰์„ ์ €์žฅํ•  ๋ฐฐ์—ด
    vector<long long> delta(N + 1, 0);

    // ๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ
    for (int i = 0; i < K; ++i) 
    {
        int L, R;
        long long X;
        cin >> L >> R >> X;
        L--; R--; // 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜

        // delta ๋ฐฐ์—ด์— ๊ตฌ๊ฐ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ธฐ๋ก
        delta[L] += X;
        if (R + 1 < N) 
        {
            delta[R + 1] -= X;
        }
    }

    // ๋ˆ„์  ํ•ฉ ๊ณ„์‚ฐ ๋ฐ ์ ์šฉ
    long long cumulative = 0;
    for (int i = 0; i < N; ++i) 
    {
        cumulative += delta[i];
        arr[i] += cumulative;
    }

    // ์ตœ์ข… ์ˆ˜์—ด์„ ๋‹ค์‹œ ์ •๋ ฌ
    sort(arr.begin(), arr.end());

    // ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ
    for (int i = 0; i < N; ++i) 
    {
        cout << arr[i] << " ";
    }
    cout << '\n';
}

int main()
{
	FILE* stream;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	freopen_s(&stream, "input.txt", "rt", stdin);

	solve();

	return 0;
}

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: