Cod sursa(job #25203)

Utilizator cretuMusina Rares cretu Data 4 martie 2007 11:23:24
Problema Kperm Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasele 11-12 Marime 0.98 kb
#include <fstream>
#define MAX 5001

using namespace std;

int n, k1, x[MAX], s[MAX], p, j, ok, sum, cnt;

void Back(int k);

int main()
{
    ifstream fin("kperm.in");
    fin >> n >> k1;
    fin.close();
    
    Back(1);    
    ofstream fout("kperm.out");
    fout << cnt%666013;
    fout.close();
    
    return 0;
}

void Back(int k)
{
    for (int i = 1; i <= n; i++)     
    {
        x[k] = i;
        if (!s[i])    
        {
            if (k == n)              
            {
                ok = 1;
                for (j = 1; j <= n-k1+1; j++)  
                {
                    sum = 0;
                    for (p = j; p <= j+k1-1; p++)
                        sum += x[p];
                    if (sum % k1 != 0) ok = 0;
                }
                if (ok) cnt++;
            }
            else
            {
                s[i] = 1;
                Back(k+1);
                s[i] = 0;    
            }
        }
    }
}