Cod sursa(job #1787544)

Utilizator giotoPopescu Ioan gioto Data 24 octombrie 2016 19:45:11
Problema Aprindere Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int m, n, a[1002], b[1002], t[1002], nr[1002], pos[1002], p[1002][1002];
inline bool cmp(int x, int y){
    return pos[x] < pos[y];
}
int main()
{
    freopen("aprindere.in", "r", stdin);
    freopen("aprindere.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n ; ++i)
        scanf("%d", &b[i]);
    for(int j = 1; j <= m ; ++j){
        scanf("%d", &a[j]); pos[j] = j;
        scanf("%d", &t[j]);
        scanf("%d", &nr[j]);
        for(int i = 1; i <= nr[j] ; ++i)
            scanf("%d", &p[j][i]);
    }
    sort(pos + 1, pos + m + 1, cmp);
    int st = 1, Sol = 0;
    for(int i = 0; i < n ; ++i){
        if(b[i] == 0){
            while(a[pos[st]] < i)
                ++st;
            Sol += t[pos[st]];
            for(int j = 1; j <= nr[pos[st]] ; ++j){
                if(b[p[pos[st]][j]] == 0)
                    b[p[pos[st]][j]] = 1;
                else
                    b[p[pos[st]][j]] = 0;
            }
        }
    }
    printf("%d", Sol);
    return 0;
}