This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
const int MAXN = 1e5 + 10;
const int MOD = 1e9 + 7;
#define int int
mt19937_64 rng((int)std::chrono::steady_clock::now().time_since_epoch().count());
int rnd(int x, int y) {
int u = uniform_int_distribution<int>(x, y)(rng); return u;
}
int bm(int b, int p) { // bigmod
if(p==0) return 1;
int r = bm(b, p/2);
if(p&1) return (((r*r) % MOD) * b) % MOD;
return (r*r) % MOD;
}
int inv(int b) { // modinv
return bm(b, MOD-2);
}
int f[MAXN];
int nCr(int n, int r) { // nCr main function, requires precomputation function
int ans = f[n]; ans *= inv(f[r]); ans %= MOD;
ans *= inv(f[n-r]); ans %= MOD; return ans;
}
void precomp() { // factorials for nCr, function MUST BE CALLED
f[0] = 1;
for(int i=1; i<MAXN; i++) f[i] = (f[i-1] * i) % MOD;
}
void solve(int tc) {
string str;
cin >> str;
int lcnt[26], rcnt[26];
for(int i=0; i<26; i++) lcnt[i] = rcnt[i] = 0;
string l, r;
for(int i=0; i<str.size(); i++) {
if(str[i] == '-') {
i += 2;
while(i < str.size()) {
r += str[i];
i++;
}
break;
}
l += str[i];
}
vector<string> vl, vr;
string u;
for(int i=0; i<l.size(); i++) {
if(l[i] == '+') {
vl.push_back(u);
u = "";
continue;
}
u += l[i];
}
if(u != "") {
vl.push_back(u);
u = "";
}
for(int i=0; i<r.size(); i++) {
if(r[i] == '+') {
vr.push_back(u);
u = "";
continue;
}
u += r[i];
}
if(u != "") {
vr.push_back(u);
u = "";
}
for(int i=0; i<vl.size(); i++) {
int mul = 1;
if(isdigit(vl[i][0])) {
mul = vl[i][0] - '0';
string uwu = vl[i].substr(1, vl[i].size() - 1);
vl[i] = uwu;
}
for(int j=0; j<vl[i].size(); j++) {
if(j+1 < vl[i].size() && isdigit(vl[i][j+1])) {
lcnt[vl[i][j] - 'A'] += mul * (vl[i][j+1] - '0');
j++;
}
else {
lcnt[vl[i][j] - 'A'] += mul;
}
}
}
for(int i=0; i<vr.size(); i++) {
int mul = 1;
if(isdigit(vr[i][0])) {
mul = vr[i][0] - '0';
string uwu = vr[i].substr(1, vr[i].size() - 1);
vr[i] = uwu;
}
for(int j=0; j<vr[i].size(); j++) {
if(j+1 < vr[i].size() && isdigit(vr[i][j+1])) {
rcnt[vr[i][j] - 'A'] += mul * (vr[i][j+1] - '0');
j++;
}
else {
rcnt[vr[i][j] - 'A'] += mul;
}
}
}
for(int i=0; i<26; i++) {
if(lcnt[i] != rcnt[i]) {
cout << "NE\n"; return;
}
}
cout << "DA\n";
}
int32_t main(){
precomp();
ios::sync_with_stdio(0); cin.tie(0);
int t = 1; cin >> t;
for(int i=1; i<=t; i++) solve(i);
}
Compilation message (stderr)
Main.cpp: In function 'void solve(int)':
Main.cpp:34:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
34 | for(int i=0; i<str.size(); i++) {
| ~^~~~~~~~~~~
Main.cpp:37:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
37 | while(i < str.size()) {
| ~~^~~~~~~~~~~~
Main.cpp:47:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
47 | for(int i=0; i<l.size(); i++) {
| ~^~~~~~~~~
Main.cpp:59:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
59 | for(int i=0; i<r.size(); i++) {
| ~^~~~~~~~~
Main.cpp:71:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
71 | for(int i=0; i<vl.size(); i++) {
| ~^~~~~~~~~~
Main.cpp:78:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
78 | for(int j=0; j<vl[i].size(); j++) {
| ~^~~~~~~~~~~~~
Main.cpp:79:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
79 | if(j+1 < vl[i].size() && isdigit(vl[i][j+1])) {
| ~~~~^~~~~~~~~~~~~~
Main.cpp:88:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
88 | for(int i=0; i<vr.size(); i++) {
| ~^~~~~~~~~~
Main.cpp:95:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
95 | for(int j=0; j<vr[i].size(); j++) {
| ~^~~~~~~~~~~~~
Main.cpp:96:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
96 | if(j+1 < vr[i].size() && isdigit(vr[i][j+1])) {
| ~~~~^~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |