Pagini recente » Cod sursa (job #911350) | Cod sursa (job #2516772) | Cod sursa (job #442388) | Cod sursa (job #2305975) | Cod sursa (job #1447801)
using namespace std;
#include <fstream>
#include <algorithm>
FILE *f=fopen("elimin.in", "r");
ofstream g("elimin.out");
int n, m, r, z;
int a[100][100];
int aux[1001];
int smax=0;
struct elimin
{
int l=0, c=0;
};
elimin v[1001];
struct vec
{
int s, poz;
}
suma[1001];
bool cmp(vec a, vec b)
{
return a.s<b.s;
}
int cont(int k)
{
int i;
for(i=1; i<k; i++)
{
if (aux[i]==aux[k]) return 0;
}
return 1;
}
void afiseaza(int k)
{
int i, j, s1=0;
for(i=1;i<=n;i++)
if(v[i].l==0)
for(j=1;j<=n;j++)
if(aux[j]==1)
s1=s1+a[i][j];
if(s1>smax) smax=s1;
}
void bkt()
{
int k, nrz;
k=1;
aux[k]=-1;
nrz=1;
while (k>0)
if(aux[k]<1)
{
aux[k]++;
if(aux[k]==1) nrz--;
if(nrz <= z)
{
if(k==m) {if(nrz==z) afiseaza(k);}
else k++, aux[k]=-1, nrz++;
}
}
else k--;
}
int main()
{
int i, j;
fscanf(f, "%d" "%d" "%d" "%d", &n , &m , &r , &z);
for(i=1; i<=n; i++)
{
suma[i].poz=i;
for(j=1; j<=m; j++)
{
fscanf(f, "%d" , &a[i][j]);
suma[i].s=suma[i].s+a[i][j];
}
}
sort(suma+1, suma+n+1, cmp);
for(i=1; i<=r; i++)
v[suma[i].poz].l=1;
bkt();
g<<smax;
return 0;
}