Question on Round380-Div2-B

Правка en5, от JVirak, 2016-11-23 16:58:14

Hi All I'm getting a timeout error for this question. As far as I can tell my algorithm is the same as the one in the tutorial and it's implemented in C++ so I'm at a loss for why it's not fast enough. Moreover when I change from reading in the input to automatically generating an input the same size it takes 13ms and the question allows 1000ms/1s.

In practise I'm reading through the rows of a 1000x1000 matrix one at a time and then the columns one at a time. In my head this should be about 2 million operations (I've heard 10^9 is usually the upper limit to avoid).

My code is below. Any help would be greatly appreciated.

Jon

P.S. It seems like my code is coming out without any kind of spacing. How do I correct this?

include

include

include

include

include

using namespace std; typedef long long ll;

int main(){ ll n,m; cin >>n >>m; ll A[n][m]; for (ll i=0;i<n;i++){ for (ll j=0;j<m;j++){ cin >> A[i][j]; } } A[0][0]=1; ll counter=0; for (ll x=0;x<n;x++){ ll ones=0; ll firstone=-1; ll lastone=-1; for (ll y=0;y<m;y++){ if (A[x][y]==1){ if (firstone==-1){ firstone=y+1; } lastone=y+1; ones++; } } if (firstone>0){ counter=counter+(lastone-ones)+(m-(firstone-1)-ones); } } for (ll y=0;y<m;y++){ ll ones=0; ll firstone=-1; ll lastone=-1; for (ll x=0;x<n;x++){ if (A[x][y]==1){ if (firstone==-1){ firstone=x+1; } lastone=x+1; ones++; } } if (firstone>0){ counter=counter+(lastone-ones)+(n-(firstone-1)-ones); } } cout << counter; return 0; }

Теги beginner

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en6 Английский JVirak 2016-11-24 11:13:43 1249
en5 Английский JVirak 2016-11-23 16:58:14 99
en4 Английский JVirak 2016-11-23 16:51:29 300 Reverted to en1
en3 Английский JVirak 2016-11-23 16:51:00 300 (published)
en2 Английский JVirak 2016-11-23 16:48:01 0 (saved to drafts)
en1 Английский JVirak 2016-11-23 16:47:21 1865 Initial revision (published)