Locuitorii planetei Eudora folosesc o reprezentare mai ciudată a numerelor naturale, astfel că orice număr natural va fi scris notând câte mii, sute, zeci, respectiv unităţi conţine acesta. De exemplu, numărul 3207
se poate reprezenta în mai multe moduri echivalente: 3m2s7u
(3
mii 2
sute şi 7
unităţi), 32s0z7u
(32
sute 0
zeci şi 7
unităţi), 32s7u
, 3207u
, etc.
Pentru a compara două numere naturale, eudorienii folosesc semnele <
şi >
, acestea având semnificaţia cunoscută şi pe Terra, iar pentru a calcula suma a două numere naturale utilizează semnul +
.
Pentru a testa abilităţile pământenilor în privinţa lucrului cu numere naturale, eudorienii au trimis pe Terra un fişier text ce conţine N
linii, fiecare linie fiind o comparaţie de forma:
expresie1>expresie2
Exemplu
comp.in
2 120u+7z13u>2s13u 1m11s+2z+1u<2m1s2z5u+0u
comp.out
1 0 1
Explicație
- O comparaţie foloseşte semnul
<
. - Prima comparaţie e falsă (
203>213
). - A doua comparaţie e adevărată (
2121<2125
).
#include <bits/stdc++.h> using namespace std; ifstream cin("comp.in"); ofstream cout("comp.out"); int sum[3]; bool cif(char ch) { return ch >= '0' && ch <= '9'; } int main() { char s[255]; int n; cin >> n; int ind=0; int b[1001] , p = 0; for(int k = 1 ; k <= n ; ++k) { cin >> s; int i = 0; bool mm = true; int nr = 0 , cnt = 1; sum[1]=0 , sum[2]=0; while(s[i]) { while(cif(s[i])) { nr = nr * 10 + s[i] - '0'; i++; } if(s[i]=='u') sum[cnt] += nr , nr = 0; if(s[i]=='z') sum[cnt] += nr * 10 , nr = 0; if(s[i]=='s') sum[cnt] += nr * 100 , nr = 0; if(s[i]=='m') sum[cnt] += nr * 1000 , nr = 0; if(s[i]=='<') mm = true , cnt++; if(s[i]=='>') mm = false , cnt++; i++; nr=0; } if(mm) { if(sum[1] < sum[2]) b[p]=1 , p++; else b[p]=0 , p++; } else { if(sum[1] > sum[2]) b[p]=1 , p++; else b[p]=0 , p++; } if(mm) ind++; } cout << ind << endl; for(int i = 0 ; i < p ; ++i) cout << b[i] << endl; return 0; }