Răspuns :
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
struct firma {
char nume[21];
long long int SD, SP;
}v[6002];
int n, D, cerinta, lg;
char s[100];
int cauta(char * s) {
int st = 0, dr = n + 1, mij, i;
while (dr - st > 1) {
mij = (st + dr) / 2;
if (strcmp(v[mij].nume, s) < 0) st = mij;
else dr = mij;
}
if (dr <= n && strcmp(v[dr].nume, s) == 0) return dr;
for (i = n; i >= dr; i--) v[i + 1] = v[i];
n++;
v[dr].SD = v[dr].SP = 0;
strcpy(v[dr].nume, s);
return dr;
}
int main() {
int i, j, nr, p10, poz1, poz2;
char * p, c;
f >> cerinta >> D;
f.get(c);
for (i = 0; i < D; i++) {
f.getline(s, 100);
lg = strlen(s);
nr = 0;
p10 = 1;
for (j = lg - 1; s[j] >= '0' && s[j] <= '9'; j--) {
nr = nr + p10 * (s[j] - '0');
p10 *= 10;
}
s[j] = 0;
p = strchr(s, '>');
*(p - 1) = 0;
poz1 = cauta(s);
v[poz1].SD += nr;
poz2 = cauta(p + 2);
v[poz2].SP += nr;
}
if (cerinta == 1)
g << n << '\n';
else
for (i = 1; i <= n; i++)
g << v[i].nume << ' ' << v[i].SD << ' ' << v[i].SP << '\n';
g.close();
return 0;
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru întrebări sau asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!