Cod sursa(job #642532)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 1 decembrie 2011 16:40:28
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.78 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 5000
typedef struct pe
{int y,t;};
pe q[N];
int n,m,i,j,a[20][N],r,c,k,x,s[N],d,u,b[20][N];
char w[N];

int cmp(pe a,pe b)
{return a.t<b.t;}

int main()
{FILE *f=fopen("elimin.in","r"),*g=fopen("elimin.out","w");
fscanf(f,"%d%d%d%d\n",&n,&m,&r,&c);
if(n>m)
     {for(i=1;i<=n;i++)
            {fgets(w,N,f);
            for(k=0,j=1;w[k]!='\n';k++)
            if(w[k]==' ')
                   j++;
            else
                   a[j][i]=a[j][i]*10+(w[k]-'0');}
     x=n,n=m,m=x,x=r,r=c,c=x;}
else
     for(i=1;i<=n;i++)
            {fgets(w,N,f);
            for(k=0,j=1;w[k]!='\n';k++)
            if(w[k]==' ')
                   j++;
            else
                   a[i][j]=a[i][j]*10+(w[k]-'0');}
for(k=1;k;)
     {s[k]++;
     if(s[k]<=n-r+k)
             if(k==r)
                     {for(i=1;i<=n;i++)
                     for(j=1;j<=m;j++)
                            b[i][j]=a[i][j];
                     for(i=1;i<=r;i++)
                     for(j=1;j<=m;j++)
                            b[s[i]][j]=0;
                     for(i=1;i<=m;i++)
                            q[i].t=0,q[i].y=i;
                     for(i=1;i<=n;i++)
                     for(j=1;j<=m;j++)
                            q[j].t+=b[i][j];
                     sort(q+1,q+m+1,cmp),d=0;
                     for(j=1;j<=c;j++)
                     for(i=1;i<=n;i++)
                            b[i][q[j].y]=0;
                     for(i=1;i<=n;i++)
                     for(j=1;j<=m;j++)
                            d+=b[i][j];
                     if(d>u)
                            u=d;}
             else
                     k++,s[k]=s[k-1];
     else
             k--;}
fprintf(g,"%d",u);
return 0;}