Pagini recente » Cod sursa (job #133592) | Cod sursa (job #2389253) | Cod sursa (job #2284754) | Cod sursa (job #2597056) | Cod sursa (job #137750)
Cod sursa(job #137750)
#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;}