sjsakib's blog

By sjsakib, history, 3 months ago, In English,

Update: With the same logic got accepted with python 3. So the problem is C++ specific. Please help me find the fault.

I was trying to solve UVa-1592-Database here's my code:

# include <bits/stdc++.h>

using namespace std;

string db[10007][12];
char buff[85];
int n,m;

bool read() {
    if(scanf("%d %d\n", &n,  &m) == EOF) return false;
    for (int i = 0; i < n; i++) {
        gets(buff); 
        int j=0,k=0;
        while(buff[j] != '\0') {
            if(buff[j] != ',') {
                db[i][k].push_back(buff[j]);
            } else k++;
            j++;
        }
    }
}

bool findDup(int c1, int c2) {
    map<pair<string, string>, int> mp;
    for (int r = 0; r < n; r++) {
        pair<string, string> p = make_pair(db[r][c1], db[r][c2]);
        //cout<<r<<' '<<db[r][c1]<<' '<<db[r][c2]<<endl;
        if(mp.find(p) == mp.end()) mp[p] = r;
        else {
            printf("NO\n%d %d\n%d %d\n", mp[p]+1, r+1, c1+1, c2+1);
            return true;
        }
    }
    return false;
}

void clear() {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            db[i][j].clear();
        }
    }
}

int main() {
    while(read()) {
        bool found = false;
        for (int i = 0; i < m; i++) {
            for (int j = i+1; j < m; j++) {
                found = findDup(i,j);
                if(found) break;
            }
            if(found) break;
        }
        if(!found) printf("YES\n");
        clear();
    }
    return 0;
}
Python Code

Why am I getting WA? Can someone help with fresh eyes please? It passes the tests given in uDebug. Thanks

 
 
 
 
  • Vote: I like it  
  • +1
  • Vote: I do not like it  

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by sjsakib (previous revision, new revision, compare).