Pagini recente » Cod sursa (job #2537439) | Cod sursa (job #2171280) | Cod sursa (job #1495951) | Cod sursa (job #2457609) | Cod sursa (job #2759705)
#include <bits/stdc++.h>
using namespace std;
ifstream f("reconst.in");
ofstream g("reconst.out");
int din[2005][2005],sol[2005],sum[2005],n,m,i,x,y,z,j,ok;
vector <int> v[2005],v2[2005];
struct wow
{
int x,y,z,nr;
}ceau[2005];
int main()
{
f>>n>>m;
for (i=1;i<=m;i++)
{
f>>x>>y>>z;
din[x][y]=z;
ceau[i].x=x;
ceau[i].y=y;
ceau[i].z=z;
ceau[i].nr=y-x+1;
v[x].push_back(y);
}
for (i=1;i<=n;i++)
{
sort (v[i].begin(),v[i].end());
for (j=1;j<v[i].size();j++)
{
int poz1=v[i][j-1],poz2=v[i][j];
v[poz1+1].push_back(poz2);
din[poz1+1][poz2]=din[i][poz2]-din[i][poz1];
}
}
for (i=1;i<=n;i++)
{
for (j=0;j<v[i].size();j++)
{
v2[v[i][j]].push_back(i);
}
}
for (i=n;i>=1;i--)
{
sort (v2[i].begin(),v2[i].end());
for (j=(int)v2[i].size()-2;j>=0;j--)
{
int poz1=v2[i][j],poz2=v2[i][j+1];
v2[poz1].push_back(poz2-1);
din[poz1][poz2-1]=din[poz1][i]-din[poz2][i];
}
}
for (i=1;i<=n;i++)
{
sol[i]=din[i][i];
if (sol[i]!=0)
{
for (j=1;j<=m;j++)
{
if (ceau[j].x<=i&&i<=ceau[j].y)
{
ceau[j].nr--;
ceau[j].z-=din[i][i];
}
}
}
}
for (i=1;i<=n;i++)
{
if (sol[i]==0)
{
ok=0;
for (j=1;j<=m;j++)
{
if (ceau[j].x<=i&&i<=ceau[j].y)
{
if (ceau[j].nr==1)
{
sol[i]=ceau[j].z;
ok=1;
}
ceau[j].nr--;
}
}
if (ok==0)
{
sol[i]=rand()%10;
}
for (j=1;j<=m;j++)
{
if (ceau[j].x<=i&&i<=ceau[j].y)
{
ceau[j].z-=sol[i];
}
}
}
}
for (i=1;i<=n;i++)
{
sum[i]=sum[i]+sol[i];
}
for (j=1;j<=m;j++)
{
assert(din[ceau[j].x][ceau[j].y]!=(sum[ceau[j].y]-sum[ceau[j].x-1]));
}
for (i=1;i<=n;i++)
{
g<<sol[i]<<" ";
}
return 0;
}