제출 #100421

#제출 시각아이디문제언어결과실행 시간메모리
1004211Khan무지개나라 (APIO17_rainbow)C++14
11 / 100
3007 ms19932 KiB
// In the name of GOD

#include "rainbow.h"

#include <bits/stdc++.h>
#include <ext/rope>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;

#define BeGood ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define orset tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define nl '\n'
#define ff first
#define ss second
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define pb push_back

typedef long long ll;
typedef double db;

const int N = 1e4 + 5;
//const int M = 1e9 + 7;

int a[1111][1111];
int b[1111][1111];
void man(int i, int j, int l, int r, int L, int R){
     if(i > L || i < l || j > R || j < r){
          return;
     }
     if(!a[i + 1][j] && !b[i + 1][j]){
          b[i + 1][j] = 2;
          man(i + 1, j, l, r, L, R);
     }
     if(!a[i][j + 1] && !b[i][j + 1]){
          b[i][j + 1] = 2;
          man(i, j + 1, l, r, L, R);
     }
     if(!a[i][j - 1] && !b[i][j - 1]){
          b[i][j - 1] = 2;
          man(i, j - 1, l, r, L, R);
     }
     if(!a[i - 1][j] && !b[i - 1][j]){
          b[i - 1][j] = 2;
          man(i - 1, j, l, r, L, R);
     } else{
          return;
     }
}
void init(int R, int C, int sr, int sc, int M, char *S){

     int n = R;
     int k = C;
     int x = sr;
     int y = sc;
     int slen = M;

          for(int i = 0; i < slen; ++i){
               a[x][y] = 1;
               if(S[i] == 'N'){
                    x--;
               }
               if(S[i] == 'W'){
                    y--;
               }
               if(S[i] == 'S'){
                    x++;
               }
               if(S[i] == 'E'){
                    y++;
               }
          }
          a[x][y] = 1;
}

int colour(int ar, int ac, int br, int bc){
     int x1 = ar;
     int x2 = br;
     int y1 = ac;
     int y2 = bc;
     memset(b, 0, sizeof(b));
     int ans = 0;
     for(int i = x1; i <= x2; ++i){
          for(int j = y1; j <= y2; ++j){
               if(a[i][j] == 0){
                    if(b[i][j] == 0){
                         ans++;
                    }
                    b[i][j] = 2;
                    man(i, j, x1, y1, x2, y2);
               }
          }
     }
     return ans;
}

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

rainbow.cpp: In function 'void init(int, int, int, int, int, char*)':
rainbow.cpp:56:10: warning: unused variable 'n' [-Wunused-variable]
      int n = R;
          ^
rainbow.cpp:57:10: warning: unused variable 'k' [-Wunused-variable]
      int k = C;
          ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...