Cod sursa(job #3233688)

Utilizator MirceaDonciuLicentaLicenta Mircea Donciu MirceaDonciuLicenta Data 4 iunie 2024 16:51:40
Problema Atac Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <limits.h>

using namespace std;

// Function to calculate the number of bombs needed for each pair of cities
int calculateBombs(vector<vector<int>> &bombs, int u, int v) {
    return bombs[u][v];
}

int main() {
    int N, M, P;
    cin >> N >> M >> P;

    vector<vector<int>> bombs(N + 1, vector<int>(N + 1, 0));

    for (int i = 0; i < M; ++i) {
        int u, v, b;
        cin >> u >> v >> b;
        bombs[u][v] = b;
    }

    int X, Y, A, B, C, D;
    cin >> X >> Y >> A >> B >> C >> D;

    vector<pair<int, int>> pairs;
    pairs.push_back({X, Y});

    // Generate the pairs of cities using the given formula
    for (int i = 1; i < M; ++i) {
        int newX = (A * pairs[i - 1].first + B * pairs[i - 1].second + C) % N + 1;
        int newY = (A * pairs[i - 1].second + B * pairs[i - 1].first + D) % N + 1;
        pairs.push_back({newX, newY});
    }

    // Calculate minimum bombs required for each of the last P pairs
    vector<int> minBombs(M, INT_MAX);

    for (int i = 0; i < M; ++i) {
        minBombs[i] = calculateBombs(bombs, pairs[i].first, pairs[i].second);
    }

    // Output the minimum bombs required for the last P pairs
    for (int i = M - P; i < M; ++i) {
        cout << minBombs[i] << endl;
    }

    return 0;
}