记录编号 607002 评测结果 TTTTTTTTTTTTTTTTTTTT
题目名称 4084.魔法卡片 最终得分 0
用户昵称 Gravatar会挽弯弓满月 是否通过 未通过
代码语言 C++ 运行时间 37.689 s
提交时间 2025-10-04 20:50:22 内存使用 3.68 MiB
显示代码纯文本
#include <iostream>
#include <vector>
#include <bitset>
using namespace std;

int main() {
	freopen("magic.in","r",stdin);
	freopen("magic.out","w",stdout);
    int n, m, q;
    cin >> n >> m >> q;
    
    // 预计算所有数字平方和
    long long total = 0;
    for (int x = 1; x <= m; x++) {
        total += x * x;
    }
    
    vector<long long> sum_front(n + 1), sum_back(n + 1);
    for (int i = 1; i <= n; i++) {
        int k;
        cin >> k;
        long long s = 0;
        for (int j = 0; j < k; j++) {
            int x;
            cin >> x;
            s += (long long)x * x;
        }
        sum_front[i] = s;
        sum_back[i] = total - s; // 反面数字的平方和
    }
    
    while (q--) {
        int l, r;
        cin >> l >> r;
        if (l == r) {
            // 单张卡片,取正面或反面的平方和较大者
            cout << max(sum_front[l], sum_back[l]) << "\n";
        } else {
            // 多张卡片,可以通过翻转显示所有数字
            cout << total << "\n";
        }
    }
    
    return 0;
}