답안 #100419

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
100419 2019-03-11T05:50:22 Z 1Khan 무지개나라 (APIO17_rainbow) C++14
0 / 100
3000 ms 10304 KB
// 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[111][111];
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 = 1; i <= n; ++i){
               for(int j = 1; j <= k; ++j){
                    a[i][j] = 0;
               }
          }
          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;
               for(int i = x1 - 1; i <= x2 + 1; ++i){
                    for(int j = y1 - 1; j <= y2 + 1; ++j){
                         b[i][j] = 0;
                    }
               }
               int ans = 0;
               for(int i = x1; i <= x2; ++i){
                    for(int j = y1; j <= y2; ++j){
                         if(a[i][j] == 0){
                              int q = 0;
                              if((b[i][j - 1] == 2 && j - 1 >= y1) || (b[i][j + 1] == 2 && j + 1 <= x2) || (b[i + 1][j] == 2 && i + 1 <= x2) || (b[i - 1][j] == 2 && i - 1 >= x1)){
                                   q++;
                              }
                              if(!q){
                                   ans++;
                              }
                              b[i][j] = 2;
                              man(i, j, x1, y1, x2, y2);
                         }
                    }
               }
     return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 512 KB Output is correct
2 Incorrect 10 ms 640 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Execution timed out 3011 ms 1664 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Runtime error 106 ms 10304 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 512 KB Output is correct
2 Incorrect 10 ms 640 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 512 KB Output is correct
2 Incorrect 10 ms 640 KB Output isn't correct
3 Halted 0 ms 0 KB -