Submission #1694508


Source Code Expand

#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#define REP(i, m, n) for(int i=int(m);i<int(n);i++)
#define EACH(i, c) for (auto &(i): c)
#define all(c) begin(c),end(c)
#define EXIST(s, e) ((s).find(e)!=(s).end())
#define SORT(c) sort(begin(c),end(c))
#define pb emplace_back
#define MP make_pair
#define SZ(a) int((a).size())

//#define LOCAL 0
//#ifdef LOCAL
//#define DEBUG(s) cout << (s) << endl
//#define dump(x)  cerr << #x << " = " << (x) << endl
//#define BR cout << endl;
//#else
//#define DEBUG(s) do{}while(0)
//#define dump(x) do{}while(0)
//#define BR
//#endif


//改造
typedef long long int ll;
using namespace std;
#define INF (1 << 20)
#define INFl (ll)5e15
#define DEBUG 0 //デバッグする時1にしてね

//ここから編集する


int main() {
    int N,K;
    cin >> N >> K;
    vector<ll> a(N);
    REP(i,0,N){
        cin >> a[i];
    }

    //K個の連続する0以上や0以下を調べる
    int mi_s = 0;
    int pl_s = 0;
    bool mis_flag = false;
    bool pls_flag = false;
    ll seq = 0;
    ll max_seq = 0;
    ll min_seq = 0;
    int max_pos = K-1;
    int min_pos = K-1;
    REP(i,0,K){
        if(a[i] >= 0){
            pl_s++;
        }
        if(a[i] <= 0){
            mi_s++;
        }
        if(pl_s >= K){
            pls_flag = true;
        }
        if(mi_s >= K){
            mis_flag = true;
        }
        seq += a[i];
    }
    max_seq = seq;
    min_seq = seq;

    REP(i,K,N){
        if(a[i] >= 0){
            pl_s++;
        }
        if(a[i] <= 0){
            mi_s++;
        }
        if(a[i-K] >= 0){
            pl_s--;
        }
        if(a[i-K] <= 0){
            mi_s--;
        }
        if(pl_s >= K){
            pls_flag = true;
        }
        if(mi_s >= K){
            mis_flag = true;
        }
        seq += a[i];
        seq -= a[i - K];
        if(max_seq < seq){
            max_pos = i;
            max_seq = seq;
        }
        if(min_seq > seq){
            min_pos = i;
            min_seq = seq;
        }

    }

    if(pls_flag || mis_flag){
        //すべてのa[i] >= 0を足し出力
        ll ans = 0;
        REP(i,0,N){
            ans += max(0LL,a[i]);
        }
        cout << ans << endl;
        return 0;
    }
    ll ansA = 0;
    //しわ寄せをgetする
    REP(i,0,N){
        if(i > max_pos - K && i <= max_pos){
             ansA += a[i];
        }else{
            if(a[i] >= 0) ansA += a[i];
        }
    }
    ll ansB = 0;
    //しわ寄せをgetしない
    REP(i,0,N){
        if(i > min_pos - K && i <= min_pos){
//            ansB += a[i];
        }else{
            if(a[i] >= 0) ansB += a[i];
        }
    }
    cout << max(ansA,ansB) << endl;
    return 0;
}

Submission Info

Submission Time
Task B - Contiguous Repainting
User homesentinel
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3406 Byte
Status WA
Exec Time 48 ms
Memory 1024 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 400
Status
AC × 4
AC × 15
WA × 11
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 1 ms 256 KB
0_03.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 1 ms 256 KB
1_02.txt AC 1 ms 256 KB
1_03.txt AC 18 ms 1024 KB
1_04.txt AC 44 ms 1024 KB
1_05.txt AC 48 ms 1024 KB
1_06.txt AC 43 ms 1024 KB
1_07.txt AC 43 ms 1024 KB
1_08.txt AC 43 ms 1024 KB
1_09.txt AC 43 ms 1024 KB
1_10.txt WA 42 ms 1024 KB
1_11.txt AC 46 ms 1024 KB
1_12.txt WA 43 ms 1024 KB
1_13.txt WA 43 ms 1024 KB
1_14.txt WA 41 ms 1024 KB
1_15.txt WA 44 ms 1024 KB
1_16.txt WA 43 ms 1024 KB
1_17.txt WA 41 ms 1024 KB
1_18.txt WA 43 ms 1024 KB
1_19.txt WA 41 ms 1024 KB
1_20.txt WA 43 ms 1024 KB
1_21.txt WA 43 ms 1024 KB