結果
| 問題 | No.709 優勝可能性 | 
| コンテスト | |
| ユーザー |  prog470 | 
| 提出日時 | 2018-06-30 18:55:51 | 
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 536 ms / 3,500 ms | 
| コード長 | 1,803 bytes | 
| コンパイル時間 | 859 ms | 
| コンパイル使用メモリ | 88,440 KB | 
| 実行使用メモリ | 7,808 KB | 
| 最終ジャッジ日時 | 2024-07-01 00:59:34 | 
| 合計ジャッジ時間 | 5,991 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 22 | 
ソースコード
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define CK(N, A, B) (A <= N && N < B)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define RREP(i, a, b) for (int i = (b - 1); a <= i; i--)
#define F first
#define S second
#define ll long long
const int INF = 1e9;
const long long LLINF = 1e18;
using namespace std;
int dy[] = {0,1,0,-1};
int dx[] = {1,0,-1,0};
int dy8[] = {0,1,1,1,0,-1,-1,-1};
int dx8[] = {1,1,0,-1,-1,-1,0,1};
/*==================================================*/
/*variable*/
int N, M;
int R[100010][20];
int d[100010];
stack< pair<int, int> > stk[15];  //値、番号
/*==================================================*/
/*function*/
/*==================================================*/
int main() {
    cin>>N>>M;
    int cnt = 0;
    REP(i,0,N){
        REP(j,0,M){
            int r;
            cin>>r;
            if(!stk[j].empty()){
                if(r > stk[j].top().first){
                    while(!stk[j].empty()) {
                        d[stk[j].top().second]--;
                        if(d[stk[j].top().second] == 0) cnt--;
                        stk[j].pop();
                    }
                    d[i]++;
                    if(d[i] == 1) cnt++;
                    stk[j].push({r, i});
                }else if(r == stk[j].top().first){
                    d[i]++;
                    if(d[i] == 1) cnt++;
                    stk[j].push({r, i});
                }
            }else{
                d[i]++;
                if(d[i] == 1) cnt++;
                stk[j].push({r, i});
            }
        }
        cout<<cnt<<endl;
    }
    return 0;
}
            
            
            
        