27672023-01-23 09:23:19CattCsoportokba osztáscpp17Hibás válasz 0/100146ms6440 KiB
#include <bits/stdc++.h>
using namespace std;
#define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
using ll = long long;

const int maxN = 2e5 + 5;
const int INF = 1e9 + 7;

int main() {
    int t = 1;
    //cin >> t;
    while(t--)
    {
        int n, k;
        cin >> n >> k;

        vector<int> prefSum(n+1, 0);

        vector<int> v(n);
        for(int i = 0; i < n; i++) {
            cin >> v[i];
            prefSum[i+1] = prefSum[i] + v[i];
        }
        
        set<int> leaders;
        leaders.insert(n-1);
        
        for(int j = 0; j < k-1; j++) {
            int last = 0;
            int maxi = -INF, ind = -1;
            auto it = leaders.begin();
            //cout << j << ": \n";
            for(int i = 0; i < n-1; i++) {
                //cout << i << ": " << last << ", " << (*it) << endl;
                if(leaders.find(i) != leaders.end()) {
                    last = i+1;
                    it++;
                    continue;
                }

                if((prefSum[i+1] - prefSum[last]) * (abs(v[i]) - abs(v[(*it)])) > maxi) {
                    maxi = (prefSum[i+1] - prefSum[last]) * (abs(v[i]) - abs(v[(*it)]));
                    ind = i;
                }
                /*cout << "val: " << (prefSum[i+1] - prefSum[last]) * (abs(v[i]) - v[(*it)]) << endl;
                cout << "maxi: " << maxi << ", " << ind << endl;*/
            }

            //cout << "-------\n";
            leaders.insert(ind);
        }
        
        int mo = 0, last = 0;
        for(int sz : leaders) {
            //cout << sz << ' ';
            mo += (prefSum[sz+1] - prefSum[last]) * abs(v[sz]);
            last = sz + 1;
        }
        //cout << "\n";
        cout << mo;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1816 KiB
2Elfogadva2ms2156 KiB
subtask20/5
3Hibás válasz37ms3624 KiB
4Hibás válasz37ms3844 KiB
5Hibás válasz37ms4048 KiB
subtask30/22
6Hibás válasz4ms2812 KiB
7Hibás válasz4ms2940 KiB
8Hibás válasz4ms3068 KiB
9Hibás válasz4ms3148 KiB
10Hibás válasz4ms3260 KiB
11Hibás válasz4ms3312 KiB
subtask40/34
12Hibás válasz2ms3340 KiB
13Hibás válasz2ms3476 KiB
14Hibás válasz2ms3588 KiB
15Hibás válasz143ms5180 KiB
16Hibás válasz141ms5056 KiB
17Hibás válasz142ms5332 KiB
18Hibás válasz3ms3952 KiB
19Hibás válasz2ms3972 KiB
20Hibás válasz2ms3972 KiB
21Hibás válasz142ms5316 KiB
22Hibás válasz143ms5440 KiB
23Hibás válasz141ms5524 KiB
subtask50/29
24Hibás válasz143ms5644 KiB
25Hibás válasz142ms5732 KiB
26Hibás válasz143ms5808 KiB
27Hibás válasz143ms5884 KiB
28Hibás válasz138ms5808 KiB
29Hibás válasz142ms5940 KiB
30Hibás válasz142ms5928 KiB
31Hibás válasz140ms6012 KiB
32Hibás válasz140ms6016 KiB
subtask60/10
33Hibás válasz145ms6092 KiB
34Hibás válasz144ms6180 KiB
35Hibás válasz146ms6008 KiB
36Hibás válasz144ms6012 KiB
37Hibás válasz144ms6356 KiB
38Hibás válasz144ms6440 KiB