Cod sursa(job #1717000)

Utilizator Bodo171Bogdan Pop Bodo171 Data 14 iunie 2016 09:25:52
Problema Cowfood Scor 2
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include<fstream>
using namespace std;
//pinex pt smekery:*
const int mod=3210121;
long long  a[25][35],p,tot,sum,s,comp[35];
int i,j,k,x,fix,n,grd;
bool dontcare[25],ok;
int main()
{
    ifstream f("cowfood.in");
    ofstream g("cowfood.out");
    f>>k>>s>>n;
    for(i=1;i<=n;i++)
       {
           sum=0;
           for(j=1;j<=k;j++)
           {
            f>>a[i][j];
            sum+=a[i][j];
           }
           if(sum>s) dontcare[i]=1;
       }
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(i!=j)
        {
            ok=1;
          for(x=1;x<=k;x++)
         {
           if(a[i][x]>a[j][x]) ok=0;
         }
         if(ok==1) dontcare[i]=1;
        }
        fix=(1<<n)-1;
    for(i=1;i<=fix;i++)
    {
        for(x=1;x<=k;x++) comp[x]=s+1;
        grd=0;
        for(j=0;j<n;j++)
        {
            if((i&(1<<j))&&dontcare[j+1]==0)
            {
                grd++;
                for(x=1;x<=k;x++)
                    if(a[j+1][x]<comp[x]) comp[x]=a[j+1][x];
            }
        }
        p=1;
        for(x=1;x<=k;x++)
        {
            p*=comp[x];
            p%=mod;
        }
        p-=1;
        if(p<0) p+=mod;
        if(grd%2==0) {tot-=p;if(tot<0) tot+=mod;}
        else {tot+=p;if(tot>=mod) tot-=mod;}

    }
    g<<tot;
    return 0;
}