頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

日立製作所 社会システム事業部 プログラミングコンテスト2020 B - Nice Shopping

問題はこちら atcoder.jp

方針

かかる金額が最小になるような買い方は,一番安い冷蔵庫と一番安い電子レンジを買うか,割引券が使える M 種類の買い方のどれか,のいずれかです。

コード

#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0; i<(n); i++)
#define ALL(n) begin(n),end(n)
 
int main(){
    int A,B,m;
    cin>>A>>B>>m;
 
    vector<int> a(A),b(B);
    int lowest_a=100001,lowest_b=100001;
    REP(i,A){
        cin>>a[i];
        if(a[i]<lowest_a){
            lowest_a=a[i];
        }
    }
    REP(i,B){
        cin>>b[i];
        if(b[i]<lowest_b){
            lowest_b=b[i];
        }
    }
 
    vector<int> x(m),y(m),c(m);
    REP(i,m){
        cin>>x[i]>>y[i]>>c[i];
    }
 
    int lowest_pair=lowest_a+lowest_b;
    int p=0;
    REP(i,m){
        p=a[x[i]-1]+b[y[i]-1]-c[i];
        if(p<lowest_pair){
            lowest_pair=p;
        }
    }
 
    cout<<lowest_pair<<endl;
}