Cod sursa(job #307198)

Utilizator CezarMocanCezar Mocan CezarMocan Data 23 aprilie 2009 17:41:21
Problema Lampa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <iostream>

using namespace std;

int n, m, i, j, k, sz, l1, l2;
string s, sol1, sol2, c1, c2;
int fib[40];

int main() {
	freopen("lampa.in", "r", stdin);
	freopen("lampa.out", "w", stdout);
	
	scanf("%d %d ", &n, &m);
	cin>>s;
	sz = s.size() - 1;

	fib[1] = fib[2] = 1;
	for (i = 3; i < 40; i++)
		fib[i] = fib[i - 1] + fib[i - 2];

	for (i = 1; i <= m; i++)
		sol1 += 'z';

//	printf("%d\n", fib[30]);

	for (i = 1; i * fib[n - 2] <= m; i++) {
		l1 = i;
		if ((m - fib[n - 2] * l1) % fib[n - 1] == 0) {
			l2 = (m - fib[n - 2] * l1) / fib[n - 1];
			c1.clear();
			c2.clear();

			for (j = sz - l2 + 1; j <= sz; j++)
				c2 += s[j];
			for (j = sz - l2 - l1 + 1; j <= sz - l2; j++)
				c1 += s[j];

			if (c1 < sol1) {
				sol1 = c1;
				sol2 = c2;
			}
		}
	}

	cout<<sol1<<"\n"<<sol2<<"\n";

	return 0;
}