제출 #168048

#제출 시각아이디문제언어결과실행 시간메모리
168048davitmarg미술 수업 (IOI13_artclass)C++17
컴파일 에러
0 ms0 KiB
/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <unordered_map>
#include <set>
#include <queue>
#include <iomanip>
#include <bitset>
#include <stack>
#include <cassert>
#include <iterator>
#include <fstream>
#define mod 1000000009ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin(), v.end()
using namespace std;

const int N = 505;

#ifndef death
#include "artclass.h"
#endif

int n, m, used[N][N], r[N][N], g[N][N], b[N][N], D;

bool inRange(int y, int x)
{
    return (min(y, x) > 0 && y <= n && x <= m);
}

int dist(int y, int x, int Y, int X)
{
    return abs(r[y][x] - r[Y][X]) + abs(g[y][x] - g[Y][X]) + abs(b[y][x] - b[Y][X]);
}

void dfs(int y, int x)
{
    used[y][x] = 1;
    int Y, X;

    Y = y + 1;
    X = x;
    if (inRange(Y, X) && !used[Y][X] && dist(y, x, Y, X) <= D)
        dfs(Y, X);

    Y = y - 1;
    X = x;
    if (inRange(Y, X) && !used[Y][X] && dist(y, x, Y, X) <= D)
        dfs(Y, X);

    Y = y;
    X = x + 1;
    if (inRange(Y, X) && !used[Y][X] && dist(y, x, Y, X) <= D)
        dfs(Y, X);

    Y = y;
    X = x - 1;
    if (inRange(Y, X) && !used[Y][X] && dist(y, x, Y, X) <= D)
        dfs(Y, X);
}

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500])
{
    n = H;
    m = W;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            r[i][j] = R[i - 1][j - 1];
            g[i][j] = G[i - 1][j - 1];
            B[i][j] = B[i - 1][j - 1];
        }

    int cnt = 0;
    D = 97;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            if (used[i][j])
                continue;
            cnt++;
            dfs(i, j);
        }
    if (cnt >= 200)
        return 3;
    if (cnt >= 70)
        return 1;
    if (cnt <= 10)
        return 4;
    int x = rand() % 8 + 1;
    if (rand >= 5)
        return 2;
    return x;
}

#ifdef death

int main()
{
    return 0;
}

#endif

/*
 
 
*/

컴파일 시 표준 에러 (stderr) 메시지

artclass.cpp: In function 'int style(int, int, int (*)[500], int (*)[500], int (*)[500])':
artclass.cpp:99:17: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
     if (rand >= 5)
                 ^