제출 #831102

#제출 시각아이디문제언어결과실행 시간메모리
831102KnightAddk (eJOI21_addk)C++14
0 / 100
1700 ms2800 KiB
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int N, K, l, r, m;
    unsigned long int S;
    // int tempArr[4];
    int *A;
    cin >> N >> K;
    A = new int[N];
    int Temp;
    for(int i = N;i>0;i--){
        cin >> Temp;
        A[N-i] = Temp;
    }
    int Q;
    cin >> Q;
    int *permList;
    permList = new int[K];
    int extraTemp;
    int type;

    int a1, a2, k_add;
    for(int t = Q;t>0;t--){
        cin >> type;
        switch (type){
            case 1:
            if(K!=1){
                for(int i=0;i<K;i++){
                    cin >> Temp;
                    permList[i] = Temp-1;
                }
                Temp = A[permList[0]];
                for(int i=K-1;i>=0;i--){
                    extraTemp = Temp;
                    Temp = A[permList[i]];
                    A[permList[i]] = extraTemp;
                }
            }else{
                cin >> Temp;
            }
            /*for(int i = 0;i<N;i++){
                cout << A[i] << ' ';8
            }
            cout << '\n';*/
            break;

            case 2:
            cin >> l >> r >> m;
            //cout << l << ' ' << r << '\n';
            S = 0;
            for(int i=l-1;i<r;i++){
                /*
                tempArr[0]=i-l+2;
                tempArr[1]=m;
                tempArr[2]=r-i;
                tempArr[3]=r-l-m+2;
                S+=A[i]*(*min_element(begin(tempArr), end(tempArr)));
                */
                a1=max(i+m-r,0);
                a2=max(l-i+m-2,0);
                k_add=m-a1-a2;
                S+=A[i]*k_add;
                //cout << S << '\n';
            }
            cout << S << endl;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...