답안 #237015

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
237015 2020-06-04T08:50:29 Z Sorting 조교 (CEOI16_popeala) C++14
17 / 100
2000 ms 912 KB
#include <bits/stdc++.h>

using namespace std;

const int k_T = 2e4 + 3;
const int k_N = 50 + 3;
const int k_S = 50 + 3;

int n, t, s;
int points[k_T];
string results[k_N];

long long dp[k_S][k_T];

int sum[k_N];
bool counts[k_N];

void divide_and_conquer(int l, int r, int sl, int sr, int subtasks){
    if(l > r)
        return;

    int mid = (l + r) >> 1;

    for(int i = 0; i < n; ++i){
        sum[i] = 0;
        counts[i] = 1;
    }

    dp[subtasks][mid] = INT_MAX;
    for(int i = mid; i < t; ++i){
        int add = 0;
        for(int j = 0; j < n; ++j){
            sum[j] += points[i];
            if(results[j][i] == '0')
                counts[j] = 0;

            if(counts[j])
                add += sum[j];
        }

        dp[subtasks][mid] = min(add + dp[subtasks - 1][i + 1], dp[subtasks][mid]);
    }

    divide_and_conquer(l, mid - 1, sl, mid, subtasks);
    divide_and_conquer(mid + 1, r, mid, sr, subtasks);
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> t >> s;

    for(int i = 0; i < t; ++i)
        cin >> points[i];
    for(int i = 0; i < n; ++i)
        cin >> results[i];

    for(int pos = 0, subtasks = 0; pos <= t; ++pos)
        dp[subtasks][pos] = (pos == t) ? 0 : INT_MAX;

    for(int subtasks = 1; subtasks <= s; ++subtasks){
        divide_and_conquer(0, t - 1, 0, t - 1, subtasks);
        dp[subtasks][t] = INT_MAX;
    }

    for(int subtasks = 1; subtasks <= s; ++subtasks)
        cout << dp[subtasks][0] << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 815 ms 828 KB Output is correct
2 Correct 752 ms 888 KB Output is correct
3 Correct 794 ms 888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2082 ms 912 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
3 Correct 815 ms 828 KB Output is correct
4 Correct 752 ms 888 KB Output is correct
5 Correct 794 ms 888 KB Output is correct
6 Execution timed out 2082 ms 912 KB Time limit exceeded
7 Halted 0 ms 0 KB -