P1199-三国游戏

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 typedef double db;
 5 #define INF 0x3f3f3f3f
 6 #define _for(i,a,b) for(int i = (a);i < b;i ++)
 7 #define _rep(i,a,b) for(int i = (a);i > b;i --)
 8 
 9 inline ll read()
10 {
11     ll ans = 0;
12     char ch = getchar(), last = ' ';
13     while(!isdigit(ch)) last = ch, ch = getchar();
14     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
15     if(last == '-') ans = -ans;
16     return ans;
17 }
18 inline void write(ll x)
19 {
20     if(x < 0) x = -x, putchar('-');
21     if(x >= 10) write(x / 10);
22     putchar(x % 10 + '0');
23 }
24 int n; 
25 int a[503][503];
26 int main()
27 {
28     n = read();
29     _for(i,1,n+1)
30         _for(j,1,n+1)
31             if(i == j)
32                 a[i][j] = -1;
33             else if(i < j)
34                 a[i][j] = read();
35             else
36                 a[i][j] = a[j][i];
37 
38     int rnt = 0;
39     priority_queue<int> pq;
40     _for(i,1,n+1)
41     {
42         while(!pq.empty())
43             pq.pop();
44         _for(j,1,n+1)
45         {
46             if(pq.size()<2)
47             {
48                 pq.push(a[i][j]);
49                 continue;
50             }
51             else if(a[i][j]>pq.top())
52             {
53                 int t1 = pq.top();
54                 pq.pop();pq.pop();
55                 pq.push(a[i][j]);
56                 pq.push(t1);
57                 continue;
58             }
59             int tmp = pq.top();
60             pq.pop();
61             if(a[i][j]>pq.top())
62             {
63                 pq.pop();
64                 pq.push(a[i][j]);
65             }
66             pq.push(tmp);    
67         }
68         pq.pop();
69         rnt = max(rnt,pq.top());
70     }
71     printf("1\n%d",rnt);
72     return 0;
73 }

猜你喜欢

转载自www.cnblogs.com/Asurudo/p/11457733.html