Pagini recente » Cod sursa (job #1977451) | Cod sursa (job #2883920) | Cod sursa (job #2661376) | Cod sursa (job #321313) | Cod sursa (job #2200896)
#include<bits/stdc++.h>
using namespace std;
ifstream in("aprindere.in");
ofstream out("aprindere.out");
int n,m,a[1010],c[1010],t[1010],nr[101],sc[101][101],mx1,mx2,pr,timp,k;
int profit(int q){
int prof = 0;
for (int j=0; j<nr[q]; j++)
if (a[sc[q][j]]) prof--;
else prof++;
return prof;
}
void intrer(int q){
for (int j=0; j<nr[q]; j++)
if (a[sc[q][j]]) a[sc[q][j]]=0;
else a[sc[q][j]]=1;
timp+=t[q];
}
bool aprins(){
for (int i=0; i<n; i++)
if (!a[i]) return false;
return true;
}
int main(){
in >> n >> m;
for (int i=0; i<n; i++)
in >> a[i];
for (int i=0; i<m; i++){
in >> c[i] >> t[i] >> nr[i];
for (int j=0; j<nr[i]; j++)
in >> sc[i][j];
}
while (!aprins()){
mx1=-1000;
for (int i=0; i<m; i++){
pr = profit(i);
if (mx1==pr){
if (c[i]!=c[mx2]) mx1 = pr, mx2 = c[i], k=i;
}
else if (mx1<pr) mx1 = pr, mx2 = c[i], k=i;
}
intrer(k);
}
out << timp;
return 0;
}