时间限制: 0 Sec 内存限制: 128 MB
题目描述输入中国古代的历史故事“田忌赛马”是为大家所熟知的。话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱。现在每匹马的速度值是固定而且已知的,而齐王出马也不管田忌的出马顺序。请问田忌该如何安排自己的马去对抗齐王的马,才能赢取最多的钱?
输出第一行为一个正整数n (n < = 10000) ,表示双方马的数量。 第二行有N个整数表示田忌的马的速度。 第三行的N个整数为齐王的马的速度。
样例输入仅有一行,为田忌赛马可能赢得的最多的钱,结果有可能为负。
3 92 83 71 95 87 74样例输出
200参考答案
#includeusing namespace std; int a[2010], b[2010]; int ans; int main() { int n; cin >> n; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++) cin >> b[i]; sort(a + 1, a + 1 + n); sort(b + 1, b + 1 + n); int ra = n, rb = n, la = 1, lb = 1; while(lb <= rb) { if(a[la] > b[lb]) { la++,lb++; ans++; } else if(a[la] < b[lb]) { rb--,ans--; la++; } else if(a[la] == b[lb]) { if(a[ra] > b[rb]) { ans++; ra--,rb--; } else { if(a[la] < b[rb]) ans--; la++,rb--; } } } cout << ans * 200; return 0; }



