Cod sursa(job #137788)

Utilizator flavius_mesterMester Flavius flavius_mester Data 17 februarie 2008 14:48:23
Problema Stalpi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
#include<cstdlib>

unsigned long n,m,maxim,smax;
unsigned v[131072];
struct stalp{unsigned long x,c,s,d;}strada[131072];
using namespace std;
void citeste()
   {ifstream f("stalpi.in");f>>n;long i;for(i=1;i<=n;++i)f>>strada[i].x>>strada[i].c>>strada[i].s>>strada[i].d;f.close();}






void prelucr()
{unsigned long  w[100],i,j;


for(i=0;i<=maxim;i++)w[i]=0;


for(i=1;i<=m;++i)
{				 for(j=strada[v[i]].x-strada[v[i]].s;j<=strada[v[i]].x+strada[v[i]].d;++j)
 				{ w[j]=1;
				 				 }
}

j=1;
for(i=1;i<=maxim;++i){if(!w[i])j=0;}
 	 if(j){unsigned long s=0;for(i=1;i<=m;++i)
	  s+=strada[v[i]].c;
	 	   if(smax==0)smax=s;else if(s<smax)smax=s;
	 
	 
	  }

}







void rec(int k)
{if(k-1==m)prelucr();
else for(int i=v[k-1]+1;i<=n-m+k;++i){v[k]=i;rec(k+1);}
	 
	 };

unsigned long maxx()
{unsigned long i,j,a;
a=strada[1].x;
for(i=1;i<=n;++i)if(strada[i].x>a)a=strada[i].x;
return a;
}

void scrie()
{ofstream g("stalpi.out");
 	   g<<smax<<"\n";
		g.close();}

int main(int argc,char **argv[])
{unsigned long i,j,a;
citeste();
maxim=strada[1].x;
for(i=1;i<=n;i++)if(strada[i].x>maxim)maxim=strada[i].x;



	for(m=1;m<=n;m++)rec(1);
scrie();
	 return 0;}