A web-based XCPC contest statement generator that converts Typst/Markdown/LaTeX format problems into professional XCPC-style PDF files directly in your browser.
- 🌐 Native Browser Runtime: No backend server required, runs entirely in your browser
- 📦 Polygon Package Import: Direct import support for contest packages exported from Codeforces Polygon system
- 📝 Multi-format Support: Supports Typst, Markdown, and LaTeX problem statement formats
- ⚡ Real-time Preview: Instant compilation and preview with WYSIWYG editing
- 🎨 Professional Typesetting: Almost pixel-perfect replica of XCPC contest statement styles
- 🔧 Flexible Configuration: Support for custom contest information, problem lists, and other metadata
- 📄 Single Problem Export: Export individual problems as separate PDF files
- 📱 Mobile Support: Responsive layout with bottom navigation for mobile devices
- 📚 Version Control: Save, restore, and compare contest versions with diff view
- ☁️ Cloud Sync: Sync contest data to cloud storage (Aliyun OSS, Tencent Cloud COS, AWS S3, GitHub)
- 🔍 Vim Mode: Optional Vim keybindings in the code editor
- Export the contest package from the Codeforces Polygon system (ZIP format)
- Click the "Import Polygon Package" button in the application
- Select the downloaded ZIP file and wait for parsing to complete
- Edit and refine problem information, then export the PDF file
# Clone the repository
git clone https://github.com/lihaoze123/xcpc-statement-generator.git
cd xcpc-statement-generator
# Configure the base item as ./ in vite.config.ts
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewIssues and Pull Requests are welcome!
This project is licensed under AGPL 3.0. See the LICENSE file for details.
- Inspired by cnoi-statement-generator (some code referenced)
- Thanks to the Typst community for providing the excellent compiler
