Submission #1221569

#TimeUsernameProblemLanguageResultExecution timeMemory
1221569vehamT-Covering (eJOI19_covering)C++20
5 / 100
111 ms8208 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;

const vi X8 = {1,1,1,0-1,-1,-1,0};
const vi Y8 = {-1,0,1,1,1,0-1,-1};
const vi X4 = {2,0,-2,0};
const vi Y4 = {0,2,0,-2};

int Calc(int m, int n, vvi &B, int k, vi &R, vi &C){
    vvi P(m,vi(n,-1));
    for(int i = 0;i < k;i++) P[R[i]][C[i]] = i;
    vi vis(k,0);
    ll ans = 0;
    for(int i = 0;i < k;i++){
        ans += B[R[i]][C[i]];
        if(!(R[i] % (m-1))){
            if(!(C[i] % (n-1))){
                return -1;
            }
            ans += B[R[i]][C[i]-1] + B[R[i]][C[i]+1] + B[R[i] + (R[i] ? -1 : 1)][C[i]];
        }
        else{
            if(!(C[i] % (n-1))) ans += B[R[i]-1][C[i]] + B[R[i]+1][C[i]] + B[R[i]][C[i] + (C[i] ? -1 : 1)];
            else{
                ans += B[R[i]][C[i]-1] + B[R[i]][C[i]+1] + B[R[i] - 1][C[i]] + B[R[i] + 1][C[i]];
                ans -= min({B[R[i]][C[i]-1],B[R[i]][C[i]+1],B[R[i] - 1][C[i]],B[R[i] + 1][C[i]]});
            }
        }
    }
    return ans;
}

int main(){
    int n,m;
    cin >> m >> n;
    vvi B(m,vi(n));
    for(int i = 0;i < m;i++) for(int j = 0;j < n;j++) cin >> B[i][j];
    int k;
    cin >> k;
    vi R(k),C(k);
    for(int i = 0;i < k;i++) cin >> R[i] >> C[i];

    cout << Calc(m,n,B,k,R,C);
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...