Αρχική > 35ος ΠΔΠ

35ος ΠΔΠ Α' Φάση
Ηλεκτρονικές κάρτες αγορών (coupon)

Λόγω της μεγάλης αύξησης των τιμών, πολλά κράτη εκδίδουν προπληρωμένες ηλεκτρονικές κάρτες για τους πολίτες τους με τις οποίες μπορούν να κάνουν διάφορες αγορές (π.χ. τρόφιμα, καύσιμα κλπ). Με βάση τα οικονομικά δεδομένα καθορίζεται το συνολικό ποσό που μπορεί να διατεθεί. Η διάθεση γίνεται σε οικογένειες με βάση εισοδηματικά κριτήρια, με τον εξής τρόπο:

Οι οικογένειες χωρίζονται σε \(N\) οικονομικές ομάδες με βάση το συνολικό ετήσιο εισόδημά τους. Οι οικογένειες που βρίσκονται στην πρώτη ομάδα έχουν μικρότερο εισόδημα από αυτές που βρίσκονταιστη δεύτερη ομάδα, κ.ο.κ. Σε όλες τις οικογένειες της ίδιας οικονομικής ομάδας θα δοθεί μία προπληρωμένη ηλεκτρονική κάρτα της ίδια αξίας και το Υπουργείο Οικονομικών έχει αποφασίσει ότι αν η αξία των καρτών της 1ης ομάδας είναι ίση με \(X_1\) ευρώ, τότε η αξία των καρτών της 2ης ομάδας θα πρέπει να είναι ίση με \(X_2 = A \cdot X_1\) ευρώ (όπου \(0 < A < 1\) δοθείς αριθμός), η αξία των καρτών της 3ης ομάδας θα πρέπει να είναι ίση με \(X_3 = A \cdot X_2\) ευρώ, κ.ο.κ. Όλες οι αξίες των καρτών σε ευρώ θα πρέπει να είναι ακέραιοι αριθμοί — τα λεπτά του ευρώ που τυχόν προκύπτουν από τις παραπάνω πράξεις θα αποκόπτονται. Επίσης, αν η αξία των καρτών μίας οικονομικής ομάδας προκύπτει να είναι μικρότερη των 10 ευρώ, τότε σε αυτή την οικονομική ομάδα δε θα διατεθεί κανένα βοήθημα.

Για παράδειγμα, έστω ότι \(A = 0.5\) και οι κάρτες της 1ης ομάδας έχουν αξία \(X_1 = 100\) ευρώ. Τότε, οι κάρτες όλων των οικονομικών ομάδων θα πρέπει να έχουν τις παρακάτω αξίες:

  • Ομάδα 1 \(X_1 = 100\) ευρώ
  • Ομάδα 2 \(X_2 = 50\) ευρώ
  • Ομάδα 3 \(X_3 = 25\) ευρώ
  • Ομάδα 4 \(X_4 = 12\) ευρώ (αποκόπτονται τα \(50\) λεπτά)
  • Ομάδα 5 \(X_5 = 0\) (θα ήταν \(6 < 10\) ευρώ)
  • Ομάδα 6 \(X_6 = 0\) (θα ήταν \(3 < 10\) ευρώ)

Το Υπουργείο Οικονομικών έχει ορίσει το μέγιστο συνολικό ποσό \(B\) που μπορεί να διατεθεί ως βοήθημα με αυτόν τον τρόπο. Γνωρίζει επίσης ότι στην 1η οικονομική ομάδα ανήκουν \(C_1\) οικογένειες, στη 2η οικονομική ομάδα ανήκουν \(C_2\) οικογένειες, κ.ο.κ. Ζητά τη βοήθειά σας για να προσδιορίσει τις αξίες των καρτών με τέτοιο τρόπο ώστε η 1η οικονομική ομάδα να πάρει κάρτες όσο το δυνατόν μεγαλύτερης αξίας, χωρίς όμως να ξεπερασθεί το μέγιστο συνολικό ποσό.

Πρόβλημα

Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες του IOI (PASCAL, C, C++, Java) το οποίο θα διαβάζει το πλήθος των ομάδων, τον αριθμό των οικογενειών ανά οικονομική ομάδα, τη σταθερά \(A\) και το μέγιστο συνολικό ποσό που μπορεί να διατεθεί. Το πρόγραμμά σας πρέπει να τυπώνει το συνολικό ποσό που θα διατεθεί και τις αξίες των καρτών κάθε οικονομικής ομάδας.

Αρχεία Εισόδου:

Τα αρχεία εισόδου με όνομα coupon.in είναι αρχεία κειμένου με την εξής δομή: Στην πρώτη γραμμή υπάρχουν τρεις αριθμοί χωρισμένοι ανά δύο με ένα κενό διάστημα: το πλήθος των οικονομικών ομάδων \(N\), η σταθερά \(A\), και μέγιστο συνολικό ποσό \(B\). Οι αριθμοί \(N\) και \(B\) είναι ακέραιοι, ενώ η σταθερά \(A\) δίνεται με τρία το πολύ δεκαδικά ψηφία. Σε κάθε μία από τις επόμενες \(N\) γραμμές υπάρχει ένας ακέραιος αριθμός \(C_i\) (όπου \(1 \leq i \leq N\)): ο αριθμός των οικογενειών που ανήκουν στην \(i\)-οστή οικονομική ομάδα.

Αρχεία Εξόδου:

Τα αρχεία εξόδου με όνομα coupon.out είναι αρχεία κειμένου με την εξής δομή. Η γραμμή πρέπει να περιέχει ακριβώς έναν ακέραιο αριθμό: το συνολικό ποσό που θα διατεθεί σε όλες τις οικογένειες. Κάθε μία από τις επόμενες \(N\) γραμμές πρέπει να περιέχει έναν ακέραιο αριθμό \(X_i\) (όπου \(1 \leq i \leq N\)): την αξία της ηλεκτρονικής κάρτας που θα διατεθεί σε κάθε οικογένεια της \(i\)-οστής οικονομικής ομάδας ή \(0\) αν στην \(i\)-οστή οικονομική ομάδα δε θα διατεθεί βοήθημα.

Περιορισμοί:

  • \(1 \leq N \leq 1.000\),
  • \(0 \leq A \leq 1\),
  • \(1 \leq B \leq 1.000.000.000\),
  • \(1 \leq C_i \leq 1.000.000\).

Παραδείγματα Αρχείων Εισόδου - Εξόδου:

1o

coupon.in coupon.out
6 0.5 1000000
10000
3000
1000
400
100
10
991000
84
42
21
10
0
0

Στο πρώτο παράδειγμα, σε κάθε οικογένεια της 1ης οικονομικής ομάδας διατίθεται μία ηλεκτρονική κάρτα των \(84\) ευρώ. Υπάρχουν \(10000\) οικογένειες σε αυτή την ομάδα που παίρνουν συνολικά \(10000 \cdot 84 = 840000\) ευρώ. Στη 2η οικονομική ομάδα θα διατεθούν συνολικά \(3000 \cdot 42 = 126000\) ευρώ, στην 3η οικονομική ομάδα θα διατεθούν συνολικά \(1000 \cdot 21 = 21000\) ευρώ, ενώ στην 4η οικονομική ομάδα θα διατεθούν συνολικά \(400 \cdot 10 = 4000\) ευρώ. Στην 5η και την 6η οικονομική ομάδα δε θα διατεθεί κανένα βοήθημα. Το συνολικό ποσό που θα διατεθεί σε όλες τις οικογένειες είναι:

\[840000 + 126000 + 21000 + 4000 = 991000\]

2o

coupon.in coupon.out
10 0.8 100000000
10000
25000
120000
40000
15000
6000
1520
800
420
170
99921970
736
588
470
376
300
240
192
153
122
97

Στο δεύτερο παράδειγμα, ξεκινώντας με \(736\) ευρώ για την 1η οικονομική ομάδα, το συνολικό ποσό επαρκεί για να διατεθεί βοήθημα σε όλες τις οικονομικές ομάδες.

Παρατηρήσεις:

Μορφοποίηση: Στην είσοδο αλλά και στην έξοδο, κάθε γραμμή τερματίζει με έναν χαρακτήρα newline.

Μέγιστος χρόνος εκτέλεσης: \(1\) sec.

Μέγιστη διαθέσιμη μνήμη: \(64\) MB.