intさわだんのBlack History

刹那的レジェンドになりたい。

SRM618 (Div.2) 250 500

初めてtopcoder練習会に参加した

とりあえず2完した。

また参加したいです。

※250

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;

class LongWordsDiv2{
public:
	string find(string word){
	
	bool flag = true;
	
	for(int i = 0;i < word.size()-1;i++){
		if(word[i] == word[i+1]){
			flag = false;
			break;
		}
	}
	
	if(flag){
		
		for(int i = 0;i < word.size();i++){
			for(int j = i+1;j < word.size();j++){
				int k = j+1;
				bool ch = false;
				for(;k < word.size();k++){
					if(word[i] == word[k]){
						ch = true;
						break;
					}
				}
				if(ch){
					for(int l = k+1;l < word.size();l++){
						if(word[j] == word[l]){
							flag = false;
							goto out;
						}
					}
				}
			}
		}
		
	}
	
	out:
	;
	
	if(flag){
	return "Likes";
	}else{
	return "Dislikes";
	}

}
};


※500

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;

class MovingRooksDiv2{
public:
	string move(vector <int> Y1, vector <int> Y2){
	
		int len = Y1.size();
		
		bool ch[8] = {};
		
		for(int i = 0;i < len;i++){
			ch[i] = false;
			if(Y1[i] == Y2[i]){
				ch[i] = true;
			}
		}
		bool flag = true;
		while(flag){
		flag = false;
		
		for(int i = 0;i < len;i++){
			if(ch[i] == true) continue;
			for(int j = i+1;j < len;j++){
				if(ch[j] == true) continue;
				if(Y1[i] > Y2[j]){
					flag = true;
					int tmp = Y1[i];
					Y1[i] = Y2[j];
					Y2[j] = tmp;
					goto out;
				}
			}
		}
		
		for(int i = 0;i < len;i++){
			if(Y1[i] == Y2[i]){
				ch[i] = true;
			}
		}
		
		out:
		;
		}
		
		int last = true;
		for(int i = 0;i < len;i++){
		if(Y1[i] != Y2[i]) last = false;
		}
		
		if(last){
		return "Possible";
		}else{
		return "Impossible";
		}
	
	
}
};