제출 #1082010

#제출 시각아이디문제언어결과실행 시간메모리
1082010timoniT-Covering (eJOI19_covering)C++17
0 / 100
1 ms604 KiB
//don't copy pls) /*TAAK ZDES NADO RECURSIU PISAT*/ //I'm not in the danger i am the DANGER #include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> #define ll long long #define pb push_back #define int long long #define F first #define S second #define all(x) (x).begin(), (x).end() #define pii pair<int,int> #define sigma signed using namespace std; using namespace __gnu_pbds; const int N = 1e6 + 5; int mod = 1e9 + 7; const int INF = 1e18; int n,m,k; void Gold(){ cin >> n >> m; int a[n + 2][m + 2] , r[n * m + 1] , c[n * m + 1]; for(int i = 0 ; i <= n + 1 ; i++){ for(int j = 0 ; j <= m + 1 ; j++){ a[i][j] = 0; } } for(int i = 1 ; i <= n ; i++){ for(int j = 1 ; j <= m ; j++){ cin >> a[i][j]; } } cin >> k; int ans = 0; for(int i = 1 ; i <= k ; ++i){ cin >> r[i] >> c[i]; r[i]++; c[i]++; } bool oknt = 0; for(int i = 1 ; i <= k ; i++){ for(int j = i + 1 ; j <= k ; j++){ if(abs(r[i] - r[j]) <= 2 || abs(c[i] - c[j]) <= 2){ oknt = 1; break; } } } if(!oknt){ for(int i = 1 ; i <= k ; ++i){ int ans1 = 0; ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] + 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] - 1]); ans += ans1; } cout << ans; return; } if(k > 2){ cout << "No"; return; } if(k == 1){ for(int i = 1 ; i <= k ; ++i){ int ans1 = 0; ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] + 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]); ans1 = max(ans1 , a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] - 1]); ans += ans1; } cout << ans; return; } if(abs(r[1] - r[2]) == 0){ if(c[1] > c[2]){ swap(r[1] , r[2]); swap(c[1] , c[2]); } int i = 1; ans = a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] - 1]; i = 2; ans += a[r[i] - 1][c[i]] + a[r[i] + 1][c[i]] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]; cout << ans; return; } else{ if(r[1] > r[2]){ swap(r[1] , r[2]); swap(c[1] , c[2]); } int i = 1; ans = a[r[i] - 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]; i = 2; ans += a[r[i] + 1][c[i]] + a[r[i]][c[i] - 1] + a[r[i]][c[i]] + a[r[i]][c[i] + 1]; cout << ans; } } sigma main(){ //freopen("txt.in","r",stdin); //freopen("txt.out","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); srand(time(0)); int TT = 1; // cin >> TT; for(int i = 1 ; i <= TT ; i++){ //cout << "Case " << i << ": "; Gold(); } }
#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...