結果

問題 No.1376 Simple LPS Problem
ユーザー tnakao0123tnakao0123
提出日時 2021-02-07 22:47:57
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 3 ms / 2,000 ms
コード長 1,413 bytes
コンパイル時間 841 ms
コンパイル使用メモリ 95,108 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-04 16:44:44
合計ジャッジ時間 3,602 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 60
権限があれば一括ダウンロードができます

ソースコード

diff #

/* -*- coding: utf-8 -*-
 *
 * 1376.cc:  No.1376 Simple LPS Problem - yukicoder
 */

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
 
using namespace std;

/* constant */

const int MAX_N = 100;
const char pad[] = "010011";

/* typedef */

/* global variables */

int ds[8];

/* subroutines */

inline bool palindrome(int i, int j) {
  for (; i < j; i++, j--)
    if (ds[i] != ds[j]) return false;
  return true;
}

/* main */

int main() {
  int n, k;
  scanf("%d%d", &n, &k);

  if (n <= 8) {
    int nbits = 1 << n;
    for (int bits = 0; bits < nbits; bits++) {
      for (int i = 0; i < n; i++) ds[i] = ((bits >> i) & 1);
      int maxl = 0;
      for (int i = 0; i < n; i++)
	for (int j = i; j < n; j++)
	  if (palindrome(i, j)) {
	    int l = j - i + 1;
	    if (maxl < l) maxl = l;
	  }
      if (maxl == k) {
	for (int i = 0; i < n; i++) putchar('0' + ds[i]);
	putchar('\n');
	return 0;
      }
    }

    puts("-1");
    return 0;
  }
  else {
    if (k <= 3) { puts("-1"); return 0; }

    int m = n - k;
    for (int i = 0; i < k; i++) putchar('1');
    for (int i = 0; i < m; i++) putchar(pad[i % 6]);
    putchar('\n');
  }
  return 0;
}
0