Informatică, întrebare adresată de demolitionlovrs, 8 ani în urmă

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 NiceShotVi
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