एक आदमी (0, 0)
ऊंचाई h
और चौड़ाई वाले शहर के उत्तर-पश्चिम कोने में रहता है w
। रोज वह अपने घर से सीमा की ओर (?, w)
या फिर टहलता है (h, ?)
। निम्नलिखित उदाहरण में, आदमी (3, 3)
आज जाता है।
(0, 0) +--+ + + . (0, 4)
|
+ +--+--+ .
|
+ + + + .
|
(3, 0) . . . . . (3, 4)
आदमी प्रत्येक बिंदु पर एक सा रिकॉर्ड करता है ( +
ऊपर उदाहरण में)। हर बार जब वह किसी बिंदु पर पहुंचता है, तो वह पूर्व की ओर जाता है यदि बिट 1
और दक्षिण अन्यथा। उसके जाने के बाद बिट को फ़्लिप किया जाता है। उदाहरण के लिए:
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)
शहर के आकार और आदमी के रिकॉर्ड को देखते हुए, n
दिनों के बाद आदमी की मंजिल की गणना करें ।
इनपुट:
पहली पंक्ति में तीन पूर्णांक हैं h
, w
और n
।
निम्नलिखित h
पंक्तियों में w
पूर्णांक हैं, जो आदमी के रिकॉर्ड को दर्शाते हैं।
h <= 1000, w <= 1000, n <= 1000000000
आउटपुट:
दो पूर्णांक, n
दिनों के बाद आदमी के गंतव्य को दर्शाते हुए ।
नमूना इनपुट:
3 4 3
1 0 1 1
0 1 0 0
1 0 1 0
नमूना आउटपुट:
0 4
नमूना कोड:
#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;
}
स्कोरिंग:
- UTF-8 में सबसे कम बाइट गिनती जीतती है।
- यदि आपके कोड का रनिंग टाइम स्वतंत्र है
n
, तो अपना स्कोर 50% कम करें।- बस सभी 1000000000 दिनों के परिणामों की गणना न करें या इस बोनस को प्राप्त करने के लिए कुछ भी इसी तरह मूर्खतापूर्ण करें। एक कुशल एल्गोरिथ्म का पता लगाएं!
n
है, तो मेरा कोड सभी 1000000000 दिनों के परिणामों की गणना करता है, फिर परिणाम का उत्पादन करता है n
, क्या मुझे अभी भी -50% बोनस मिलता है?