답안 #250676

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
250676 2020-07-18T16:57:44 Z kingfran1907 Bob (COCI14_bob) C++14
0 / 120
162 ms 17912 KB
#include <bits/stdc++.h>

using namespace std;
typedef long long llint;

const int maxn = 1010;

int n, m;
int niz[maxn][maxn];
int cn[maxn][maxn];
vector< int > v;
int sol[maxn];
stack< llint > p, q;

llint cal() {
    while (!q.empty()) {q.pop(); p.pop();}
    llint out = 0;

    llint tren = 0;
    for (int i = 0; i < v.size(); i++) {
        llint cnt = 1;
        while (!p.empty() && p.top() >= v[i]) {
            llint ac = q.top(); q.pop();
            llint val = p.top(); p.top();

            cnt += ac;
            tren -= ac * (val - v[i]);
        }
        tren += v[i];
        out += tren;
    }
    v.clear();
    return out;
}

int main() {
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            scanf("%d", &niz[i][j]);

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (i == 0) cn[i][j] = 1;
            else {
                if (niz[i][j] == niz[i - 1][j]) cn[i][j] = 1 + cn[i - 1][j];
                else cn[i][j] = 1;
            }
        }
    }

    llint sol = 0;
    for (int i = 0; i < n; i++) {
        v.push_back(cn[i][0]);
        for (int j = 1; j < m; j++) {
            if (niz[i][j - 1] != niz[i][j]) sol += cal();
            v.push_back(cn[i][j]);
        }
        sol += cal();
    }
    printf("%d", sol);
    return 0;
}

Compilation message

bob.cpp: In function 'llint cal()':
bob.cpp:20:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < v.size(); i++) {
                     ~~^~~~~~~~~~
bob.cpp: In function 'int main()':
bob.cpp:61:21: warning: format '%d' expects argument of type 'int', but argument 2 has type 'llint {aka long long int}' [-Wformat=]
     printf("%d", sol);
                     ^
bob.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
bob.cpp:40:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &niz[i][j]);
             ~~~~~^~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 768 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 768 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 35 ms 4856 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 37 ms 5244 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 5504 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 34 ms 5496 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 140 ms 14968 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 159 ms 17912 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 162 ms 17784 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 159 ms 17900 KB Output isn't correct
2 Halted 0 ms 0 KB -