답안 #73449

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73449 2018-08-28T09:34:38 Z FedericoS 무지개나라 (APIO17_rainbow) C++14
0 / 100
4 ms 804 KB
#include <iostream>
#include <queue>
#include <set>
#include "rainbow.h"
using namespace std;

bool B[2][100005];
bool V[2][100005];
int R,C;
int rmov[]={1,-1,0,0};
int cmov[]={0,0,1,-1};
queue<pair<int,int>> Q;
set<pair<int,int>> S[3];

void init(int R_, int C_, int sr, int sc, int M, char *W) {

	R=R_;
	C=C_;

	B[sr][sc]=true;
	int cont=0;

	for(int i=0;i<M;i++){

		if(W[i]=='S')
			sr++;
		if(W[i]=='N')
			sr--;
		if(W[i]=='E')
			sc++;
		if(W[i]=='W')
			sc--;

		B[sr][sc]=true;
	}

	for(int r=1;r<R+1;r++)
		for(int i=1;i<C+1;i++)
			if(B[r][i] and !B[r][i-1])
				S[r].insert({cont,i});
			else if(!B[r][i] and B[r][i-1])
				S[r].insert({cont++,i});

	for(int i=1;i<C+1;i++)
		if((B[0][i]|B[1][i]) and !(B[0][i-1]|B[1][i-1]))
			S[2].insert({cont,i});
		else if(!(B[0][i]|B[1][i]) and (B[0][i-1]|B[1][i-1]))
			S[2].insert({cont++,i});

}

int colour(int ar, int ac, int br, int bc) {

	int k;

	if(ar==0 and br==0)
		k=0;
	if(ar==1 and br==1)
		k=1;
	if(ar==0 and br==1)
		k=2;

	return (*(S[k].lower_bound({ac,-1}))).second-(*(--S[k].lower_bound({bc+1,-1}))).second+1;

}

# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 500 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 628 KB Output is correct
2 Runtime error 3 ms 804 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 376 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -