Участник:Morgachev/ANARC05B

Материал из DISCOPAL
Перейти к: навигация, поиск

https://www.spoj.com/problems/ANARC05B/

C++14 (clang8.0)

#include <algorithm>
#include <iostream>
#define MAX 10000
 
using namespace std;
 
int main() {
    int n1;
    int n2;
    int seq1[MAX], seq2[MAX];
 
    scanf("%d", &n1);
    while (n1) {
        int tot = 0;
        int sum1 = 0;
        int sum2 = 0;
 
        for (int i=0; i < n1; ++i) {
            scanf("%d", &seq1[i]);
        }
        scanf("%d", &n2);
        for (int i = 0; i < n2; ++i) {
            scanf("%d", &seq2[i]);
        }
 
        int i = 0;
        int j = 0;
        while (i < n1 && j < n2) {
            if (seq1[i] == seq2[j]) {
                tot += max(sum1, sum2) + seq1[i];
                sum1 = 0, sum2 = 0;
                i++;
                j++;
            } else if (seq1[i] > seq2[j]) {
                sum2 += seq2[j];
                j++;
            } else {
                sum1 += seq1[i];
                i++;
            }
        }
 
        for (; i < n1; i++) {
            sum1 += seq1[i];
        }
        for (; j < n2; j++) {
            sum2 += seq2[j];
        }
 
        tot += max(sum1, sum2);
 
        printf("%d\n", tot);
        scanf("%d", &n1);
    }
    return 0;
}