Va rog mult!!
Cristi are în sertar n chei vechi; fiecare a costat o anumită sumă exprimată în lei și fiecare a fost făcută pentru a deschide aceeași ușă. Atât cheile cât și ușa au un cod format din 3 litere. Din păcate, unele chei s-au deteriorat și Cristi le-a împărțit în patru categorii:
stricate – nicio o literă din codul cheii nu coincide cu litera de pe aceeași poziție din codul ușii, iar pentru a o repara trebuie sa plătească prețul integral al cheii;
deteriorate – exact o litera din codul cheii coincide cu litera de pe aceeași poziție din codul ușii, iar pentru a o repara trebuie sa plătească două treimi din prețul cheii;
slab deteriorate – exact două litere din codul cheii coincid cu literele de pe aceleași poziții din codul ușii, iar
pentru a o repara trebuie sa platească o treime din prețul cheii;
bune – codul cheii e identic cu codul ușii, iar cheia nu trebuie reparată;
Cerințe
1) Să se afle câte chei din fiecare categorie are Cristi.
2) Sa se afle cât a plătit Cristi pentru a repara toate cheile.
Date de intrare
Fișierul de intrare key.in conține pe prima linie un număr P, codul ușii COD și numarul n; dacă P=1 se rezolvă doar cerința 1, iar dacă P=2 se rezolva doar cerința 2. Pe următoarele n linii se citește codul cheii și prețul acesteia.
Date de ieșire
Dacă P=1 se afișează numărul de chei stricate, numărul de chei deteriorate, numărul de chei slab deteriorate și numărul de chei bune separate printr-un spațiu, în aceasta ordine.
Dacă P=2 se afișează doar un număr COST care exprima costul total pentru repararea cheilor.
Restricții și precizări
1 ≤ n ≤ 100
P=1 sau P=2
orice cod e format din 3 litere
orice preț este divizibil cu 3 și aparține intervalului deschis [0,999];
la cerința 2, dacă toate cheile sunt bune sau costul total este 0 se afișează doar mesajul GRATIS
pentru rezolvarea corectă a cerinței 1 se acordă 30 de puncte, iar pentru rezolvarea corectă a cerinței 2 se acordă 70 de puncte
Exemplu
key.in
1 ABC 4
ABC 15
AXC 9
AFG 3
UYC 30
key.out
0 2 1 1
Explicație
Cristi nu are cheii stricate, dar are două cheii deteriorate, una slab deteriorata și una buna
Exemplu
key.in
2 ABC 4
ABC 15
AXC 9
AFG 3
UYC 30
key.out
25
Răspunsuri la întrebare
Răspuns de
2
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream fin("key.in");
ofstream fout("key.out");
int p, n, sum = 0, v[4]{}, cost;
string mk, s;
fin >> p >> mk >> n;
do
{
fin >> s >> cost;
if(s == mk)
++v[3];
else if(s[0] == mk[0] && s[1] == mk[1] ||
s[0] == mk[0] && s[2] == mk[2] ||
s[1] == mk[1] && s[2] == mk[2])
{
++v[2];
sum += cost / 3;
}
else if(s[0] == mk[0] || s[1] == mk[1] || s[2] == mk[2])
{
++v[1];
sum += cost / 3 * 2;
}
else
{
++v[0];
sum += cost;
}
} while(--n);
if(p == 1)
fout << v[0] << ' ' << v[1] << ' ' << v[2] << ' ' << v[3];
else if(sum == 0)
fout << "GRATIS";
else fout << sum;
}
Alte întrebări interesante
Arte,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă