Pagini recente » Cod sursa (job #3174144) | Cod sursa (job #1401427) | Cod sursa (job #2514637) | Cod sursa (job #86374) | Cod sursa (job #1507699)
#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; }