Seorang pria tinggal di sudut barat laut (0, 0)kota dengan tinggi hdan lebar w. Setiap hari ia berjalan dari rumahnya ke perbatasan (?, w)atau (h, ?). Dalam contoh berikut, pria itu pergi ke (3, 3)hari ini.
(0, 0) +--+ + + . (0, 4)
|
+ +--+--+ .
|
+ + + + .
|
(3, 0) . . . . . (3, 4)
Pria itu mencatat sedikit di setiap titik ( +contoh di atas). Setiap kali dia mencapai suatu titik, dia pergi ke timur jika bagian itu 1dan selatan sebaliknya. Bit dibalik setelah dia pergi. Sebagai contoh:
Day 1: 1--0 1 1 Day 2: 0 1 1 1 Day 3: 1--1--1--1-- Day 4: 0 0 0 0
| | |
0 1--0 0 0 0 1 0 1 0 1 0 1--0 1 0
| | |
1 0 1--0 1--0 0 1 0 1 0 1 0 1--0 1
| | |
Destination: (3, 3) Destination: (3, 1) Destination: (0, 4) Destination: (3, 2)
Mengingat ukuran kota dan catatan pria itu, hitung tujuan pria itu setelah nberhari-hari.
Memasukkan:
Di baris pertama ada tiga bilangan bulat h,, wdan n.
Dalam hbaris berikut adalah wbilangan bulat, yang menunjukkan catatan pria itu.
h <= 1000, w <= 1000, n <= 1000000000
Keluaran:
Dua bilangan bulat, yang menunjukkan tujuan pria itu setelah nberhari-hari.
Input sampel:
3 4 3
1 0 1 1
0 1 0 0
1 0 1 0
Output sampel:
0 4
Kode sampel:
#include <iostream>
using namespace std;
bool d[1000][1000];
int main(){
int h, w, n;
cin >> h >> w >> n;
for(int i = 0; i < h; i++)
for(int j = 0; j < w; j++)
cin >> d[i][j];
int i, j;
while(n--)
for(i = 0, j = 0; i < h && j < w;){
bool &b = d[i][j];
d[i][j] ? j++ : i++;
b = !b;
}
cout << i << " " << j << endl;
}
Mencetak:
- Hitungan byte terendah dalam kemenangan UTF-8.
- Jika waktu menjalankan kode Anda tidak tergantung
n, kurangi skor Anda hingga 50%.- Jangan hanya menghitung hasil 1000000000 hari atau melakukan hal yang sama bodohnya untuk mendapatkan bonus ini. Temukan algoritma yang efisien!
nterjadi, kode saya menghitung hasil semua 1000000000 hari, lalu menampilkan hasilnya n, apakah saya masih mendapatkan bonus -50%?