168012025-05-13 14:34:19AblablablaÖsszegzésekcpp17Részben helyes 61/10018ms1332 KiB
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, s, x, t, u;
    vector<int> a, b, o;
    s = 0;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> x;
        a.push_back(x);
        b.push_back(x);
        o.push_back(x);
        s += x;
    }
    //find one higher
    //method: go from end, find smallest number that neighbors one that is bigger, increment it and save its location
    //but: never can be the last number: cant add ones
    //so we start later
    //also end before 0: dont want overindexing
    //if none found: increment first
    //solution: copy everything until location, then spam 1 until sum = s
    if (o.size() != 1)
    {
        int z = s - a[a.size() - 1];
        int loc = 0;
        for (int i = a.size() - 2; i > 0; i--)
        {
            if (a[i] < a[i - 1])
            {
                loc = i;
                break;
            }
            else
            {
                z -= a[i];
            }
        }
        a[loc]++;
        z++;
        a.resize(loc + 1);
        for (int i = 0; i < s - z; i++)
        {
            a.push_back(1);
        }
        for (int i = 0; i < a.size(); i++)
        {
            cout << a[i] << " ";
        }
        cout << "\n";
    } else{
        cout << "0\n";
    }

    //find one lower (earlier)
    //method: drop first non-one value by one, add value needed to achieve sum
    //sum is same, but lexicographically lower now

    int poz = -1;
    for (int i = b.size() - 1; i >= 0; i--)
    {
        if (b[i] > 1)
        {
            b[i]--;
            poz = i;
            break;
        }
    }

    if(poz != -1){
        int eddig = 0;
        for(int i = 0; i <= poz; i++){
            cout << b[i] << " ";
            eddig += b[i];
        }
        cout << s - eddig << "\n";
    } else{
        cout << "0\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
3Részben helyes1ms508 KiB
subtask26/6
4Elfogadva1ms316 KiB
5Elfogadva1ms368 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms500 KiB
subtask36/6
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva4ms564 KiB
13Elfogadva4ms748 KiB
subtask410/10
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms316 KiB
17Elfogadva4ms564 KiB
18Elfogadva4ms748 KiB
19Elfogadva1ms316 KiB
20Elfogadva2ms316 KiB
21Elfogadva16ms1328 KiB
22Elfogadva18ms1332 KiB
23Elfogadva16ms1312 KiB
subtask55/10
24Részben helyes1ms316 KiB
25Részben helyes1ms496 KiB
26Részben helyes1ms316 KiB
27Részben helyes1ms316 KiB
28Részben helyes1ms316 KiB
subtask65/10
29Elfogadva1ms316 KiB
30Részben helyes1ms316 KiB
31Elfogadva1ms328 KiB
32Elfogadva1ms316 KiB
33Elfogadva1ms316 KiB
subtask729/58
34Elfogadva1ms316 KiB
35Elfogadva1ms316 KiB
36Részben helyes1ms316 KiB
37Elfogadva1ms316 KiB
38Elfogadva1ms368 KiB
39Elfogadva1ms316 KiB
40Elfogadva1ms316 KiB
41Elfogadva1ms500 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva4ms564 KiB
46Elfogadva4ms748 KiB
47Elfogadva1ms316 KiB
48Elfogadva2ms316 KiB
49Elfogadva16ms1328 KiB
50Elfogadva18ms1332 KiB
51Részben helyes1ms316 KiB
52Elfogadva1ms316 KiB
53Részben helyes1ms316 KiB
54Elfogadva1ms328 KiB
55Elfogadva1ms316 KiB
56Elfogadva1ms316 KiB
57Részben helyes1ms316 KiB
58Elfogadva1ms316 KiB
59Elfogadva1ms556 KiB
60Elfogadva1ms316 KiB
61Részben helyes1ms412 KiB
62Részben helyes1ms316 KiB
63Részben helyes2ms316 KiB
64Részben helyes2ms316 KiB
65Részben helyes3ms316 KiB
66Részben helyes4ms564 KiB