Cod sursa(job #1507699)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 21 octombrie 2015 20:26:10
Problema 1-sir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <array>
#include <vector>
using namespace std;

constexpr int mod = 194767;

void do_mod(int& x){
	if(x >= mod){
		x -= mod; } }

int main(){
	ifstream f("1-sir.in");
	ofstream g("1-sir.out");
	int n, s;
	f >> n >> s;

	const int max_s = (n*(n-1))/2;
	const int lim = 2*max_s + 1;

	if(s > max_s || s < -max_s){
		g << 0;
		return 0; }

	array<array<int, 256 * 256 + 1>, 2> buf = {};

	int cur = 0, vechi = 1;
	buf[vechi][max_s] = 1;

	int *st, *mij, *dr;

	for(int i = 1, j; i < n; ++i){
		mij = &buf[cur][0], dr = &buf[vechi][i];

		for(j = 0; j < i; ++j, ++mij, ++dr){
			*mij = *dr; }

		st = &buf[vechi][0];
		for(j = 2*i; j < lim; ++j, ++st, ++mij, ++dr){
			*mij = *st + *dr;
			if(*mij >= mod){
				*mij -= mod; } }

		for(j = 0; j < i; ++j, ++st, ++mij){
			*mij = *st; }

		vechi ^= 1, cur ^= 1; }
	g << buf[vechi][s + max_s];
	return 0; }