Submission #366876

#TimeUsernameProblemLanguageResultExecution timeMemory
366876Ruxandra985Bomb (IZhO17_bomb)C++14
3 / 100
537 ms67968 KiB
#include <bits/stdc++.h> using namespace std; char a[2510][2510] , b[2510][2510]; int sl[2510][2510] , sr[2510][2510] , v[2510]; int dp[2510] , n , m; void solve (){ int i , j , minil , minir , last; for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++) sl[i][j] = sr[i][j] = 0; } for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++){ if (a[i][j] == '1'){ sl[i][j] = 1 + sl[i][j - 1]; if (a[i][j + 1] != '1') dp[1] = min(dp[1] , sl[i][j]); /// daca am o linie, pot sa am dp[1] coloane } } for (j = m ; j ; j--){ if (a[i][j] == '1') sr[i][j] = 1 + sr[i][j + 1]; } } /// ce se intampla daca vreau mai mult de o linie for (j = 1 ; j <= m ; j++){ minil = minir = 2000000000; last = 0; for (i = 0 ; i <= n + 1 ; i++){ if (a[i][j] != '1'){ if (last && i - last != 1) dp[i - last] = 0; /// nu poti sa ai atatea linii last = i; /// utlima linie pe care e 0 pe pozitia asta minil = minir = 2000000000; } else { minir = min(minir , sr[i][j]); minil = min(minil , sl[i][j]); dp[i - last] = min(dp[i - last] , minil + minir - 1); } } } for (i = 2 ; i <= n ; i++) dp[i] = min (dp[i] , dp[i - 1]); //printf ("%d ",dp[1]); } int main() { FILE *fin = stdin; FILE *fout = stdout; int i , j , miniw , minih , lenc , sol; fscanf (fin,"%d%d\n",&n,&m); for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++) a[i][j] = fgetc(fin); fgetc(fin); } for (i = 1 ; i <= max(n , m) ; i++) dp[i] = 2000000000; sol = 0; solve(); for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++){ b[i][j] = a[n - i + 1][j]; } } for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++){ a[i][j] = b[i][j]; } } solve(); for (i = 1 ; i <= n ; i++){ if (dp[i] != 2000000000) sol = max(sol , i * dp[i]); } fprintf (fout,"%d",sol); /// raspuns return 0; }

Compilation message (stderr)

bomb.cpp: In function 'int main()':
bomb.cpp:65:17: warning: unused variable 'miniw' [-Wunused-variable]
   65 |     int i , j , miniw , minih , lenc , sol;
      |                 ^~~~~
bomb.cpp:65:25: warning: unused variable 'minih' [-Wunused-variable]
   65 |     int i , j , miniw , minih , lenc , sol;
      |                         ^~~~~
bomb.cpp:65:33: warning: unused variable 'lenc' [-Wunused-variable]
   65 |     int i , j , miniw , minih , lenc , sol;
      |                                 ^~~~
bomb.cpp:66:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   66 |     fscanf (fin,"%d%d\n",&n,&m);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...