还没想好

biggayboy 2021-04-14 19:30:54

#include <cstdio>
#include <cmath>
unsigned long long point[1010][2] = { 0 }, task1[1010][2] = { 0 }, task2[1010] = { 0 }, finishtime[1010] = { 0 },
          neartime[1010] = { 0 };
unsigned long long finish[1010] = { 0 };
int task3[1010][6] = { 0 };
bool sign[1010] = { 0 };
int main() {
    int x = 0, m, n;
    long long ys = 0, t = 0;
    unsigned long long money = 0;
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) {
        int a;
        scanf("%lld%llu%llu%llu%llu%llu%d%llu", &point[i][0], &point[i][1], &task1[i][0], &task1[i][1],
              &task2[i], &neartime[i], &a, &finish[i]);
        task3[i][0] = a;
        for (int j = 1; j <= a; j++) scanf("%d", &task3[i][j]);
    }
    for (int i = 1; i <= m; i++) {
        int y, dlt;
        scanf("%d", &y);
        dlt = y - x;
        if(dlt < 0) 
			dlt = -dlt; 
        t += dlt;
        x = y;
        ys += point[x][0];
        money += point[x][1];
        point[x][1] = 0;
        finishtime[x] = t;
        sign[x] = 1;
        if (finish[x] > 0 && task1[x][1] >= t && t >= task1[x][0]) {
            if (ys >= task2[x]&&ys>=0) {
                bool flag = 1;
                for (int j = 1; j <= task3[x][0]; j++)
                    if (!sign[task3[x][j]] || t-finishtime[task3[x][j]] >  neartime[x])
                        flag = 0;
                if (flag) {
                    money += finish[x];
                    finish[x] = 0;
                    printf("%d\n", x);
                }
            }
        }
    }
    printf("%llu", money);
    return 0;
}