結果
問題 | No.709 優勝可能性 |
ユーザー |
![]() |
提出日時 | 2019-05-02 23:18:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 569 ms / 3,500 ms |
コード長 | 3,029 bytes |
コンパイル時間 | 2,001 ms |
コンパイル使用メモリ | 177,224 KB |
実行使用メモリ | 19,968 KB |
最終ジャッジ日時 | 2024-12-31 13:51:26 |
合計ジャッジ時間 | 8,959 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 22 |
ソースコード
#define _USE_MATH_DEFINES#define _CRT_SECURE_NO_WARNINGS#include <bits/stdc++.h>using namespace std;/*BigInteger#include <boost/multiprecision/cpp_dec_float.hpp>#include <boost/multiprecision/cpp_int.hpp>#include <boost/rational.hpp>namespace xxx = boost::multiprecision;using Bint = xxx::cpp_int;using Real = xxx::number<xxx::cpp_dec_float<1024>>;*/#define int long long#define pb(x) push_back(x)#define m0(x) memset((x), 0LL, sizeof(x))#define mm(x) memset((x), -1LL, sizeof(x))//container#define ALL(x) (x).begin(), (x).end()#define RALL(a) (a).rbegin(), (a).rend()#define EACH(i, c) for (typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)#define EXIST(s, e) ((s).find(e) != (s).end())#define UNIQUE(v) (v).erase(unique((v).begin(), (v).end()), (v).end());#define PERM(c) \sort(ALL(c)); \for (bool c##p = 1; c##p; c##p = next_permutation(ALL(c)))// debug#define GET_VAR_NAME(variable) #variable#define test(x) cout << GET_VAR_NAME(x) << " = " << x << endl;// bit_macro#define Bit(n) (1LL << (n))#define Bitset(a, b) (a) |= (1LL << (b))#define Bitunset(a, b) (a) &= ~(1LL << (b))#define Bitcheck(a, b) ((((a) >> (b)) & 1LL) == 1LL)#define Bitcount(a) __builtin_popcountll((a))//typedeftypedef long long lint;typedef unsigned long long ull;typedef complex<long double> Complex;typedef pair<int, int> P;typedef tuple<int, int, int> TP;typedef vector<int> vec;typedef vector<vec> mat;//constantconstexpr int INF = (int)1e18;constexpr int MOD = (int)1e9 + 7;constexpr double PI = (double)acos(-1);constexpr double EPS = (double)1e-10;constexpr int dx[] = {-1, 0, 0, 1, 0, -1, -1, 1, 1};constexpr int dy[] = {0, -1, 1, 0, 0, 1, -1, 1, -1};//template <typename T>void chmax(T &a, T b) { a = max(a, b); }template <typename T>void chmin(T &a, T b) { a = min(a, b); }//inline int toInt(string s) {int v;istringstream sin(s);sin >> v;return v;}template <class T>inline string toString(T x) {ostringstream sout;sout << x;return sout.str();}//struct Accelerate_Cin {Accelerate_Cin() {cin.tie(0);ios::sync_with_stdio(0);cout << fixed << setprecision(20);};};signed main() {int N, M;cin >> N >> M;mat r(N, vec(M));for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {cin >> r[i][j];}}int mx[11];vector<int> deg(N, 0);stack<int> st[11];int ans = 1;cout << ans << endl;for (int i = 0; i < M; i++) {mx[i] = r[0][i];st[i].push(0);}deg[0] = M;for (int i = 1; i < N; i++) {for (int j = 0; j < M; j++) {if (mx[j] < r[i][j]) {while (!st[j].empty()) {int tmp = --deg[st[j].top()];if (tmp == 0) --ans;st[j].pop();}deg[i]++;st[j].push(i);mx[j] = r[i][j];if (deg[i] == 1) ans++;} else if (mx[j] == r[i][j]) {deg[i]++;st[j].push(i);if (deg[i] == 1) ans++;}}cout << ans << endl;}return 0;}