結果
問題 | No.43 野球の試合 |
ユーザー |
|
提出日時 | 2016-05-20 16:27:16 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 5,000 ms |
コード長 | 2,590 bytes |
コンパイル時間 | 1,711 ms |
コンパイル使用メモリ | 173,332 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 01:05:29 |
合計ジャッジ時間 | 2,277 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 |
ソースコード
#include "bits/stdc++.h"#define REP(i,a,b) for(int i=a;i<b;++i)#define rep(i,n) REP(i,0,n)#define ll long long#define ull unsigned lltypedef long double ld;#define SQR(X) ( (X)*(X) )#define CUBE(X) ( (X)*(X)*(X) )#define ALL(a) (a).begin(),(a).end()#define ifnot(a) if(not a)#define dump(x) cerr << #x << " = " << (x) << endlusing namespace std;void reader(int &a){scanf("%d",&a);}void reader(double &a){scanf("%lf",&a);}void reader(char a[]){scanf("%s",a);}void reader(ll &a){scanf("%lld",&a);}void reader(ull &a){scanf("%llu",&a);}// void reader(string& a){cin >> a;};template<class T,class U> void reader(T& t,U& u){reader(t); reader(u);}template<class T,class U,class V> void reader(T& t,U& u,V& v){reader(t); reader(u); reader(v);}void writer(int a,char c) {printf("%d",a); putchar(c);}void writer(ll a,char c) {printf("%lld",a); putchar(c);}void writer(double a,char c) {printf("%.20lf",a); putchar(c);}void writer(char a[]) {printf("%s",a);};void writer(char a[],char c) {printf("%s",a);putchar(c);};void writer(char a,char c) {putchar(a); putchar(c);};template<class T>void writerLn(T t){writer(t,'\n');}template<class T,class U>void writerLn(T t,U u){writer(t,' ');writer(u,'\n');}template<class T,class U,class V> void writerLn(T t,U u,V v){writer(t,' ');writer(u,' ');writer(v,'\n');}template<class T> void writerArr(T x[], int n){int i;if(!n){putchar('\n');return;}rep(i,n-1) writer(x[i],' ');writer(x[n-1],'\n');}template<class T> void writerVec(vector<T> x){int n=x.size();int i;if(!n){putchar('\n');return;}rep(i,n-1) writer(x[i],' ');writer(x[n-1],'\n');}int dx[] = { 0,1,0,-1 };int dy[] = { 1,0,-1,0 };// #define int llint n;bool test = 1;void dfs(int& ans,char s[][7],int a,vector<int>& win) {REP(i,a,n) {REP(j,i+1,n) {if(s[i][j] == '-') {s[i][j] = '!';win[i]++;dfs(ans,s,i,win);win[i]--;win[j]++;dfs(ans,s,i,win);win[j]--;s[i][j] = '-';return;}}}int rank = 1;vector<int> tmp = win;sort(ALL(tmp),greater<int>());rep(i,n) {if(i) {if(tmp[i] != tmp[i-1]) rank++;}if(tmp[i] == win[0]) break;}if(rank < ans) ans = rank;}//............................#define MAX 300000signed main(){int i,j,k,l;cin >> n;char s[6][7];rep(i,n) cin >> s[i];vector<int> win(6);int ans = 100;rep(i,n) {REP(j,i+1,n) {if(s[i][j] == 'o') win[i] += 1;if(s[i][j] == 'x') win[j] += 1;}}dfs(ans,s,0,win);cout << ans << endl;return 0;}