#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
vector< string> invalidTransactions( vector< string> & in) {
char buf1[ 1000 ] , buf2[ 1000 ] ;
int N, amount[ 1000 ] , i, j, tm [ 1000 ] ;
string city[ 1000 ] , name[ 1000 ] ;
vector< string> res;
N = in.size ( ) ;
for ( i= 0 ; i< ( N) ; i++ ) {
sscanf ( in[ i] .c_str ( ) , "%[^,],%d,%d,%[^,]" , buf1, tm + i, amount+ i, buf2) ;
name[ i] = buf1;
city[ i] = buf2;
}
for ( i= 0 ; i< ( N) ; i++ ) {
for ( j= 0 ; j< ( N) ; j++ ) {
if ( amount[ i] > 1000 || ( name[ i] == name[ j] && city[ i] ! = city[ j] && abs ( tm [ j] - tm [ i] ) <= 60 ) ) {
break ;
}
}
if ( j! = N) {
res.push_back ( in[ i] ) ;
}
}
return res;
}
}
;
// cLay varsion 20190829-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// vector<string> invalidTransactions(vector<string>& in) {
// int i, j, N;
// string name[1000], city[1000];
// int tm[1000], amount[1000];
// char buf1[1000], buf2[1000];
// vector<string> res;
//
// N = in.size();
// rep(i,N){
// sscanf(in[i].c_str(), "%[^,],%d,%d,%[^,]", buf1, tm+i, amount+i, buf2);
// name[i] = buf1;
// city[i] = buf2;
// }
//
// rep(i,N){
// rep(j,N) if(amount[i] > 1000 || (name[i]==name[j] && city[i]!=city[j] && abs(tm[j] - tm[i]) <= 60)) break;
// if(j!=N) res.push_back(in[i]);
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIHZlY3RvcjxzdHJpbmc+IGludmFsaWRUcmFuc2FjdGlvbnModmVjdG9yPHN0cmluZz4mIGluKXsKICAgIGNoYXIgYnVmMVsxMDAwXSwgYnVmMlsxMDAwXTsKICAgIGludCBOLCBhbW91bnRbMTAwMF0sIGksIGosIHRtWzEwMDBdOwogICAgc3RyaW5nIGNpdHlbMTAwMF0sIG5hbWVbMTAwMF07CiAgICB2ZWN0b3I8c3RyaW5nPiByZXM7CiAgICBOID0gaW4uc2l6ZSgpOwogICAgZm9yKGk9MDtpPChOKTtpKyspewogICAgICBzc2NhbmYoaW5baV0uY19zdHIoKSwgIiVbXixdLCVkLCVkLCVbXixdIiwgYnVmMSwgdG0raSwgYW1vdW50K2ksIGJ1ZjIpOwogICAgICBuYW1lW2ldID0gYnVmMTsKICAgICAgY2l0eVtpXSA9IGJ1ZjI7CiAgICB9CiAgICBmb3IoaT0wO2k8KE4pO2krKyl7CiAgICAgIGZvcihqPTA7ajwoTik7aisrKXsKICAgICAgICBpZihhbW91bnRbaV0gPiAxMDAwIHx8IChuYW1lW2ldPT1uYW1lW2pdICYmIGNpdHlbaV0hPWNpdHlbal0gJiYgYWJzKHRtW2pdIC0gdG1baV0pIDw9IDYwKSl7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoaiE9Til7CiAgICAgICAgcmVzLnB1c2hfYmFjayhpbltpXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMTkwODI5LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgdmVjdG9yPHN0cmluZz4gaW52YWxpZFRyYW5zYWN0aW9ucyh2ZWN0b3I8c3RyaW5nPiYgaW4pIHsKLy8gICAgIGludCBpLCBqLCBOOwovLyAgICAgc3RyaW5nIG5hbWVbMTAwMF0sIGNpdHlbMTAwMF07Ci8vICAgICBpbnQgdG1bMTAwMF0sIGFtb3VudFsxMDAwXTsKLy8gICAgIGNoYXIgYnVmMVsxMDAwXSwgYnVmMlsxMDAwXTsKLy8gICAgIHZlY3RvcjxzdHJpbmc+IHJlczsKLy8gCi8vICAgICBOID0gaW4uc2l6ZSgpOwovLyAgICAgcmVwKGksTil7Ci8vICAgICAgIHNzY2FuZihpbltpXS5jX3N0cigpLCAiJVteLF0sJWQsJWQsJVteLF0iLCBidWYxLCB0bStpLCBhbW91bnQraSwgYnVmMik7Ci8vICAgICAgIG5hbWVbaV0gPSBidWYxOwovLyAgICAgICBjaXR5W2ldID0gYnVmMjsKLy8gICAgIH0KLy8gCi8vICAgICByZXAoaSxOKXsKLy8gICAgICAgcmVwKGosTikgaWYoYW1vdW50W2ldID4gMTAwMCB8fCAobmFtZVtpXT09bmFtZVtqXSAmJiBjaXR5W2ldIT1jaXR5W2pdICYmIGFicyh0bVtqXSAtIHRtW2ldKSA8PSA2MCkpIGJyZWFrOwovLyAgICAgICBpZihqIT1OKSByZXMucHVzaF9iYWNrKGluW2ldKTsKLy8gICAgIH0KLy8gCi8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK