1일1알

백준 11332번 시간초과 C++ 본문

알고리즘

백준 11332번 시간초과 C++

영춘권의달인 2023. 2. 28. 13:10

https://www.acmicpc.net/problem/11332

 

11332번: 시간초과

각 테스트 케이스들에 대하여 시간 초과가 나면 "TLE!", 시간 초과가 나지 않으면 "May Pass." 를 출력한다.

www.acmicpc.net

 

범위를 넘어가는 수는 미리 차단해서 오버플로우를 방지한다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>

using namespace std;
using int64 = long long;

int c;
const int TLENUM = 1000000001;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> c;
    while (c--) {
        string str;
        cin >> str;
        int n, t, l;
        cin >> n >> t >> l;
        string com = "";
        bool start = false;
        for (int i = 0; i < str.length(); i++) {
            if (start == false) {
                if (str[i] == '(') start = true;
            }
            else {
                if (str[i] == ')') break;
                com += str[i];
            }
        }
        int64 maxVal = 1;
        int64 time = 100000000 * l;
        bool pass = true;
        if (com == "N") {
            maxVal = n;
        }
        else if (com == "N^2") {
            if (n >= 31263) pass = false;
            maxVal = pow(n, 2);
        }
        else if (com == "N^3") {
            if (n >= 1001) pass = false;
            maxVal = pow(n, 3);
        }
        else if (com == "2^N") {
            if (n >= 30) pass = false;
            else maxVal = pow(2, n);
        }
        else if (com == "N!") {
            if (n >= 13)  pass = false;
            else {
                for (int i = 1; i <= n; i++) {
                    maxVal *= i;
                }
            }
        }
        maxVal *= t;
        if (pass) {
            if (maxVal > time) pass = false;
        }
        if (pass) cout << "May Pass.\n";
        else cout << "TLE!\n";
    }
}