पृष्ठभूमि
पुनर्व्यवस्था असमानता एक असमानता कि संख्या उलटफेर पर आधारित है। यदि मेरे पास समान लंबाई की संख्याओं की दो सूचियाँ हैं, तो x 0 , x 1 , x 2 ... x n-1 और y 0 , y 1 , y 2 ... y n-1 एक ही लम्बाई की, जहाँ मैं हूँ सूची में संख्याओं को फिर से व्यवस्थित करने की अनुमति है, योग x 0 y 0 + x 1 y 1 + x 2 y 2 + ... + x n-1 y n-1 को अधिकतम करने के लिए 2 सूचियों को क्रमबद्ध करना है गैर घटते क्रम।
विकिपीडिया लेख यहाँ पढ़ें ।
कार्य
आप एक प्रोग्राम लिखेंगे जो एसटीडीआईएन से इनपुट लेता है या एक फ़ंक्शन जो संख्याओं के 2 सरणियों (या संबंधित कंटेनरों) को स्वीकार करता है (जो समान लंबाई के हैं)।
मान लें कि आप एक फ़ंक्शन लिखते हैं जो 2 सरणियों (ए और बी) को स्वीकार करता है, तो आप उन तरीकों की संख्या खोजने जा रहे हैं जिन्हें आप अधिकतम करने के लिए दूसरे सरणी (बी) में संख्याओं को पुनर्व्यवस्थित कर सकते हैं:
a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+...+a[n-1]*b[n-1]
इस स्थिति में, यदि सरणी b है [1 0 , 2 1 , 2 2 , 3 3 , 3 4 ] (शुद्धता के लिए सूचक),
[१ ० , २ १ , २ २ , ३ ३ , ३ ४ ],
[१ ० , २ १ , २ २ , ३ ४ , ३ ३ ], (दो तीनों को स्वैप करें)
[1 ० , २ २ , २ १ , ३ ३ , ३ ४ ] (दो दो को स्वैप करें)
[1 ० , २ २ , २ १ , ३ ४ , ३ ३ ] (दो ३ का स्वैप करें और दो २ का स्वैप करें)
अलग व्यवस्था मानी जाती है। मूल सरणी, अपने आप में, एक संभावित पुनर्व्यवस्था के रूप में भी गिना जाता है यदि यह योग को अधिकतम करता है।
एसटीडीआईएन इनपुट के लिए, आप मान सकते हैं कि सरणियों की लंबाई सरणियों से पहले प्रदान की जाती है (कृपया राज्य करें ताकि आप इसका उपयोग करें), या यह कि सरणियाँ विभिन्न लाइनों (कृपया राज्य भी करें) पर प्रदान की जाती हैं।
यहां 4 संभावित इनपुट (सुविधा के लिए) दिए गए हैं:
5 1 1 2 2 2 1 2 2 3 3 (length before arrays)
1 1 2 2 2 1 2 2 3 3 (the 2 arrays, concatenated)
1 1 2 2 2
1 2 2 3 3 (the 2 arrays on different lines)
5
1 1 2 2 2
1 2 2 3 3 (length before arrays and the 2 arrays on different lines)
आउटपुट के लिए, आपको उत्तर देने की अनुमति है (यदि आप कोई फ़ंक्शन लिखते हैं) या उत्तर को STDOUT में प्रिंट करें। यदि आप अधिक सुविधाजनक हैं, तो आप उत्तर मॉड 10 9 +7 (0 से 10 9 +6 तक) का उत्पादन करना चुन सकते हैं ।
परीक्षण के मामले (और स्पष्टीकरण):
[1 1 2 2 2] [1 2 2 3 3] => 24
पहले 2 प्रविष्टियों को 1 और 2 होना चाहिए। अंतिम 3 प्रविष्टियां 2, 3 और 3 हैं। 2 में से 2 पहले वाली प्रविष्टियों और अंतिम 2 प्रविष्टियों की व्यवस्था करने के 2 तरीके हैं। पहले 2 प्रविष्टियों में, उन्हें पुनर्व्यवस्थित करने के 2 तरीके हैं। अंतिम 2 प्रविष्टियों में, उन्हें पुनर्व्यवस्थित करने के 6 तरीके हैं।
[1 2 3 4 5] [6 7 8 9 10] => 1
केवल 1 तरीका है, जो सरणियों में दी गई व्यवस्था है।
[1 1 ... 1 1] [1 1 ... 1 1] (10000 numbers) => 10000! or 531950728
दूसरे सरणी का हर संभव क्रमांकन मान्य है।
डेनिस टेस्टकेस: Pastebin => 583159312 (आधुनिक +१००००००००७)
स्कोरिंग:
यह कोड-गोल्फ है, इसलिए सबसे कम उत्तर जीतता है।
टाई के मामले में, संबंध प्रस्तुत करने के समय तक टूट जाएंगे, पहले प्रस्तुत करने के पक्ष में।
नोट करें:
कंटेनर अनसोल्ड हो सकते हैं।
कंटेनरों में पूर्णांक शून्य या नकारात्मक हो सकते हैं।
मामूली आकार के सरणियों (लंबाई में लगभग 10000) के लिए कार्यक्रम को पर्याप्त रूप से (अधिकतम एक घंटे में) चलाना पड़ता है।
गणित स्टैक एक्सचेंज पर इस प्रश्न से प्रेरित है ।
[. . .]
plz प्रतिक्रिया जैसे इनपुट स्वीकार करते हैं