इस ट्यूटोरियल में, हमें एक एल्गोरिदम लिखना होगा जिससे इनविजिलेटर द्वारा पकड़े बिना असाइनमेंट पास करने का तरीका ढूंढा जा सके। प्रत्येक छात्र को अपना असाइनमेंट इनविजिलेटर को जमा करना होता है। छात्र A का असाइनमेंट छात्र B के पास है, इसलिए छात्र B को इनविजिलेटर की नज़र में आए बिना असाइनमेंट को छात्र A को वापस/पास करना होगा।
सभी छात्र एक कतार में बैठे हैं। हमें इनविजिलेटर द्वारा पकड़े बिना असाइनमेंट को छात्र A तक वापस पास करने का तरीका ढूंढना होगा। जिन आवश्यकताओं के तहत वे असाइनमेंट पास कर सकते हैं वे इस प्रकार हैं:
छात्र A (इंडेक्स i पर) अपने पड़ोसी को असाइनमेंट पास कर सकता है जो इंडेक्स (i-1) और (i+1) पर है
छात्र असाइनमेंट दे सकते हैं, प्राप्त कर सकते हैं या अपने पास रख सकते हैं।
इनविजिलेटर इंडेक्स [il, rl] से सभी छात्रों को देख रहा है।
जब छात्र इनविजिलेटर की निगरानी की सीमा में होता है, तो वह असाइनमेंट भेज या प्राप्त नहीं कर सकता।
यदि छात्र उस सीमा में रहते हुए असाइनमेंट अपने पास रखता है, तो इनविजिलेटर उसे नहीं पकड़ेगा।
हमें चार इनपुट p, q, r, s दिए गए हैं जहां p कुल छात्रों की संख्या है, q कुल चरणों की संख्या है जिसके दौरान इनविजिलेटर il से rl तक निगरानी रख रहा है, c छात्र A की स्थिति है, और d छात्र B की स्थिति है।
प्रत्येक चरण (q) के तीन इनपुट हैं:
कुल समय जिसके दौरान इनविजिलेटर दी गई सीमा पर नजर रखेगा।
बाएं समावेशी सीमा जिसमें इनविजिलेटर देख रहा है।
दाएं समावेशी सीमा जिसमें इनविजिलेटर देख रहा है।
आउटपुट के लिए 3 शब्दों का अनुक्रम आवश्यक है: "Left", "Right", और "Keep", जो दर्शाता है कि छात्र असाइनमेंट पास कर रहा है (बाएं/दाएं) या रख रहा है। उदाहरण के लिए,
चरण
इनपुट
8 3 2 7 1 4 6 2 1 8 3 5 6
आउटपुट
Right Keep Right Right Right Right
व्याख्या
इन निर्देशों का पालन करके, असाइनमेंट इंडेक्स 2 पर छात्र से इंडेक्स 7 पर छात्र तक बिना पकड़े पहुंच जाएगा।
इनपुट
5 1 1 3 1 2 5
आउटपुट
Keep Right Right
व्याख्या
इन निर्देशों का पालन करके, असाइनमेंट इंडेक्स 1 पर छात्र से इंडेक्स 3 पर छात्र तक बिना पकड़े पहुंच जाएगा।
समाधान खोजने का दृष्टिकोण
एक दिए गए उदाहरण में, यदि इनविजिलेटर उस सीमा में निगरानी रख रहा है, या तो वर्तमान में असाइनमेंट रखने वाला छात्र या वह छात्र जिसे असाइनमेंट भेजा जाना है, तो वह छात्र उस असाइनमेंट को अपने पास रखेगा। अन्यथा वह उसे अपने आसन्न छात्र को अंतिम लक्ष्य की दिशा में पास कर देगा।
उदाहरण
#include <bits/stdc++.h> using namespace std; void solve(int p, int q, int r, int s, long t[], int l[], int ar[]){ int dir; string val; if (r < s) { dir = 1; val = "Right"; } else { dir = -1; val = "Left"; } string answer = ""; int i = 0, current = r; long tim = 1; while (1) { if (i < q && tim == t[i]) { if ((current >= l[i] && current <= ar[i]) || (current + dir >= l[i] && current + dir <= ar[i])) { answer += "Keep\n"; tim++; i++; continue; } i++; } current += dir; answer += val+"\n"; tim++; if (current == s) break; } cout << answer << endl; } int main(){ int p = 8, q = 3, r = 2, s = 7; long t[q + 2] = { 1,2,3 }; int l[q + 2] = { 4,1,5 }; int ar[q + 2] = { 6,8,6 }; solve(p, q, r, s, t, l, ar); return 0; }
आउटपुट
Right Keep Right Right Right Right
निष्कर्ष
इस ट्यूटोरियल में, हमने C++ कोड के साथ इनविजिलेटर द्वारा पकड़े बिना असाइनमेंट पास करने का तरीका ढूंढने के लिए एक एल्गोरिदम लिखना सीखा। हम इस कोड को जावा, पायथन और अन्य भाषाओं में भी लिख सकते हैं। उपरोक्त एल्गोरिदम प्रतिस्पर्धी कोडिंग प्रतियोगिताओं के लिए एक महत्वपूर्ण एल्गोरिदम है। इस प्रश्न में एक वास्तविक जीवन की समस्या शामिल है, जिसे हमने C++ कोड के माध्यम से हल किया। हमें उम्मीद है कि आपको यह ट्यूटोरियल उपयोगी लगा।