Submission #1138726


Source Code Expand

#include <iostream>
#include <string>

#define lli long long int
#define REP(i,n) for(int i=0;i<n;i++)
#define DEBUG 0

#define S 1
#define W -1

using namespace std;

void show(int *data,int n){
	REP(i,n){
		cout<<data[i];
	}
	cout<<endl;
}

string ans(int *data,int n){
	string str="";
	REP(i,n){
		if(data[i]==S){
			str+="S";
		}else{
			str+="W";
		}
	}
	return str;
}


int func(char c,int *data,int n){
	int num;
	if(c =='o'){
		num=1;
	}else{
		num=-1;
	}
	if(DEBUG)show(data,n);
	return num*data[n-1]*data[n];
}

int calc(int *data,int n,string str){
	for(int i=1;i<n-2;i++){
		data[i+1]= func(str.at(i),data,i);
	}
	if(data[n-1] == func(str.at(n-2),data,n-2) && data[0] == func(str.at(n-1),data,n-1)){
		cout<<ans(data,n)<<endl;
		return 1;
	}
	return -1;
}

lli min(lli a,lli b){
	return a <= b ? a : b;
}

void init(int *data,int n,int i,char c){
	int num;
	if(c =='o'){
		num=1;
	}else{
		num=-1;
	}
	int first[4] = {S,S,W,W};
	int second[4]= {S,W,S,W};
	REP(j,n){
		data[j]=0;
	}
	data[0]=first[i];
	data[1]=second[i];
	data[n-1]=num*data[0]*data[1];
}

int main(){
	int n;
	int *data;
	string str;
	cin>>n>>str;
	data = new int[n];
	REP(i,4){
		init(data,n,i,str.at(0));
		if(calc(data,n,str)==1){
			return 0;
		}
	}

	cout<<"-1"<<endl;
	return 0;

}

Submission Info

Submission Time
Task D - Menagerie
User soto800
Language C++14 (GCC 5.4.1)
Score 500
Code Size 1357 Byte
Status AC
Exec Time 7 ms
Memory 1152 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 16
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 256 KB
00_example_02.txt AC 1 ms 256 KB
00_example_03.txt AC 1 ms 256 KB
01.txt AC 5 ms 768 KB
02.txt AC 4 ms 640 KB
03.txt AC 1 ms 256 KB
04.txt AC 1 ms 256 KB
05.txt AC 6 ms 1152 KB
06.txt AC 6 ms 1024 KB
07.txt AC 2 ms 384 KB
08.txt AC 2 ms 384 KB
09.txt AC 1 ms 256 KB
10.txt AC 2 ms 384 KB
11.txt AC 7 ms 1152 KB
12.txt AC 7 ms 1152 KB
13.txt AC 7 ms 1152 KB