Pagini recente » Profil M@2Te4i | Cod sursa (job #2962753) | Profil Andrei_Cotor | Profil CostanMiriam | Cod sursa (job #1709940)
#include <fstream>
#include <set>
using namespace std;
int t, n, m, j, B, p[501], tr[501], tribut[501], a, i, sumAct, sT, maxim, q;
int gata[501];
set<int> st[501];
set<int>::iterator it1, it2;
int main()
{
ifstream f("tribut.in");
ofstream g("tribut.out");
f>>t;
for(B=1; B<=t; B++)
{
sT=0;
f>>n>>m;
for(j=1; j<=n; j++)
{
f>>tribut[j];
}
for(j=1; j<=m; j++)
{
f>>p[j]>>tr[j];
for(q=1; q<=p[j]; q++)
{
f>>a;
st[j].insert(a);
}
}
/*for(i=1; i<=m; i++)
{
for(it1=st[i].begin(); it1!=st[i].end(); it1++)
{
int ok=0;
for(j=1; j<=m; j++)
{
if(i==j)
continue;
for(it2=st[j].begin(); it2!=st[j].end(); it2++)
{
if((*it1)==(*it2))
{
ok=1;
//set<int>::iterator it3=it2;
//it2--;
//st[j].erase(it3);
}
}
}
if(ok==0)
{
gata[(*it1)]=1;
sumAct=min(tr[i], tribut[(*it1)]);
tr[i]-=sumAct;
sT+=sumAct;
}
}
}*/
for(i=1; i<=n; i++)
{
int cnt=0;
for(j=1; j<=m; j++)
{
for(it1=st[j].begin(); it1!=st[j].end(); it1++)
{
if((*it1)==i)
cnt++;
}
}
if(cnt==1)
{
gata[(*it1)]=1;
sumAct=min(tr[i], tribut[(*it1)]);
tr[i]-=sumAct;
sT+=sumAct;
}
}
for(i=1; i<=n; i++)
{
if(!gata[i])
{
maxim=0;
for(j=1; j<=m; j++)
{
for(it1=st[j].begin(); it1!=st[j].end(); it1++)
{
if((*it1)==i)
{
maxim=max(maxim, min(tr[j], tribut[i]));
}
}
}
sT+=maxim;
}
gata[i]=0;
}
g<<sT<<"\n";
}
}