AOJ1074 Poplularity Estimation

Popularity Estimation | Aizu Online Judge

Introduction to Programming Introduction to Algorithms and Data Structures Library of Data Structures Library of Graph Algorithms Library of Computational Geometry Library of Dynamic Programming Library of Number Theory

最初は各時間に名前を突っ込んで,時間で見て各キャラクターにポイントを配る方式にしてWAを量産した.間違っている所を発見することができず(諦めの気持ちで),にいた人数)として,各キャラクターで見ていった結果普通にACが取れた.ポイントについては3行で場合分けが書いてあるけど,1行でとかけた.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <map>
#include <set>

#define REP(i,k,n) for(int i=k;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define INF 1<<30
#define pb push_back
#define mp make_pair

using namespace std;
typedef long long ll;
typedef pair<int,int> P;

int main() {
  int n;
  while(cin >> n && n) {
      map<string, int> p;
      int cnt[35];
      memset(cnt, 0, sizeof(cnt));

      string s[50];
      int m[50], d[50][50];
      rep(i, n) {
          cin >> s[i] >> m[i];

          rep(j, m[i]) {
              cin >> d[i][j];
              cnt[d[i][j]]++;
          }
      }

      rep(i, n) {
          rep(j, m[i]) {
              p[s[i]] += n - cnt[d[i][j]] + 1;
          }
      }

      int ans = INF;
      string res = "";
      rep(i, n) {
          if(ans > p[s[i]]) {
              ans = p[s[i]];
              res = s[i];
          } else if(ans == p[s[i]] && res > s[i]) {
              ans = p[s[i]];
              res = s[i];
          }
      }

      cout << ans << " " << res << endl;
  }

  return 0;
}
May 12th, 2016