Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <cmath>
- #include <algorithm>
- #include <vector>
- #include <map>
- using namespace std;
- #define MAX 17000
- #define eps 1e-7
- struct con{
- double a, b, c;
- double score[10];
- }cc[MAX];
- struct rank{
- int i, r;
- }rr[MAX];
- void score(int i){
- cc[i].score[0] = cc[i].a + cc[i].b + cc[i].c;
- cc[i].score[1] = cc[i].a + cc[i].b;
- cc[i].score[2] = cc[i].b + cc[i].c;
- cc[i].score[3] = cc[i].a + cc[i].c;
- cc[i].score[4] = cc[i].a;
- cc[i].score[5] = cc[i].b;
- cc[i].score[6] = cc[i].c;
- cc[i].score[7] = 0.0;
- }
- int main()
- {
- int i, j, k, n, t = 1;
- double hh;
- while(scanf("%d", &n)==1) {
- if(!n) return 0;
- for(i = 1; i <= n; i++) {
- scanf("%lf %lf %lf", &cc[i].a, &cc[i].b, &cc[i].c);
- score(i);
- sort(cc[i].score, cc[i].score+8, greater < double > () );
- }
- for(i = 1; i <= n; i++){
- scanf("%d", &rr[i].i);
- rr[i].r = i;
- }
- hh = cc[rr[1].i].score[0];
- k = 0;
- for(i = 2; i <= n; i++){
- for(j = 0; j < 8; j++){
- if(cc[rr[i].i].score[j]+eps < hh){
- hh = cc[rr[i].i].score[j];
- break;
- }
- else if(cc[rr[i].i].score[j] - hh < eps){
- if(rr[i].i < rr[i-1].i) continue;
- break;
- }
- }
- if(j > 7) k = 1;
- if(k) break;
- }
- if(k) printf("Case %d: No solution\n", t);
- else printf("Case %d: %.2lf\n", t, hh+eps);
- t++;
- }
- // system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement