QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#791154#5254. DifferenceskhanhtaiTL 0ms0kbC++232.2kb2024-11-28 17:10:162024-11-28 17:10:16

Judging History

This is the latest submission verdict.

  • [2024-11-28 17:10:16]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2024-11-28 17:10:16]
  • Submitted

answer

#include<bits/stdc++.h>
#define pb push_back
#define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define MOD 1000000007
#define inf 1e18
#define fi first
#define se second
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FORD(i,a,b) for(int i=a;i>=b;i--)
#define sz(a) ((int)(a).size())
#define endl '\n'
#define pi 3.14159265359
#define TASKNAME "differences"
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#pragma GCC optimization ("Ofast")
using namespace std;
template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return true; }; return false; }
template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return true; }; return false; }
typedef pair<int,int> ii;
typedef pair<int,ii> iii;
typedef vector<int> vi;

const int MAXN = 1e5 + 9;
vector<vector<char>> str;
vector<int> ord;
int n, m, k, invalid[MAXN];

main()
{
    fast;
    srand(time(NULL));
    if (fopen(TASKNAME".inp","r")){
        freopen(TASKNAME".inp","r",stdin);
        freopen(TASKNAME".out","w",stdout);
    }
    scanf("%d %d %d", &n, &m, &k);
    str.resize(n);
    FOR(i, 0, n - 1){
        str[i].resize(m);
        FOR(j, 0, m - 1){
            scanf(" %c", &str[i][j]);
        }
        ord.pb(i);
    }

    random_shuffle(ord.begin(), ord.end());

    FOR(i, 0, (int) ord.size() - 1){

        bool ch = true;
        if (invalid[i]) continue;

        FOR(j, 0, (int) ord.size() - 1){
            if (j == i) continue;

            int same = 0, dif = 0;
            FOR(t, 0, m - 1){
                if (str[ord[i]][t] != str[ord[j]][t]) dif++;
                else same++;

                if (dif > k or same > m - k) {
                    invalid[j] = true;
                    invalid[i] = true;
                    ch = false;
                    break;
                }
            }
            if (!ch) break;
        }

        if (ch) {
            cout << ord[i] + 1<< endl;
            exit(0);
        }
    }

}
/**
Warning:
Đọc sai đề???
Cận lmao
Code imple thiếu case nào không.
Limit.
**/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Time Limit Exceeded

input:

3585 4096 2048
ABBBBBBAABAAAAAAAAAAAAABAABABBBABABAAAAABABAAAABAABAABBABBAABAABABBABAABBABBABABABBAAAABBABAABBBBABBBAABBBBBABAABAAABAAABBBBAAAABAABAABABABABBBBBABAAABAAABBAABABBABAABBAABBAABABBBBAABAAAABAABBABAAABBAAAAAABAABBABBABAABABBBAABABBABABBBAAAAABBBABABABBAABAAAABBBBABABAABBBABABABBAABBBABAB...

output:


result: