#!/usr/bin/env python3
import os
import re
import sys
import shutil

def convert_testcases(problem_dir: str):
    if not os.path.isdir(problem_dir):
        print(f"Directory not found: {problem_dir}")
        return

    files = os.listdir(problem_dir)
    in_map = {}
    out_map = {}

    # *.in / *.out 매핑
    for f in files:
        if f.startswith('.'):
            continue
        if f.endswith('.in'):
            base = f[:-3]  # remove .in
            in_map[base] = f
        elif f.endswith('.out'):
            base = f[:-4]  # remove .out
            out_map[base] = f

    # 유효 쌍
    pairs = []
    for base in sorted(in_map.keys()):
        if base in out_map:
            pairs.append((in_map[base], out_map[base]))

    if not pairs:
        print("No valid input/output pairs found.")
        return

    # 순서대로 .1.in .1.out .2.in .2.out … 만들기
    for idx, (infile, outfile) in enumerate(pairs, start=1):
        src_in = os.path.join(problem_dir, infile)
        src_out = os.path.join(problem_dir, outfile)
        dst_in = os.path.join(problem_dir, f".{idx}.in")
        dst_out = os.path.join(problem_dir, f".{idx}.out")

        shutil.copyfile(src_in, dst_in)
        shutil.copyfile(src_out, dst_out)
        print(f"Created {dst_in}, {dst_out}")

    # .info 파일 만들기
    info_path = os.path.join(problem_dir, ".info")
    with open(info_path, "w") as f:
        f.write(str(len(pairs)) + "\n")
        f.write("3000\n")

    print(f"Created {info_path} with {len(pairs)} cases.")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python3 convert_testcases.py <problem_dir>")
        sys.exit(1)
    convert_testcases(sys.argv[1])
