BLOG main image
전체보기 (437)
Problem Solving (182)
Memory of the Past (255)
186,824 Visitors up to today!
Today 71 hit, Yesterday 156 hit
daisy rss
tistory 티스토리 가입하기!
'Problem Solving/TopCoder logs'에 해당되는 글 119건
2012/01/15 12:27
엄청 오랜만에 참가한듯..~  
250 대충 빨리 푸니깐 rating 오를꺼같아서.. 나머지는 그냥 접었다.. 챌도 시도했으면 좋은 결과가 있었을텐데..
어쨋든 rating 은 좀 올라서 다시 Yellow 복귀!!!!

아.. 새벽 2시 매치는 너무 힘들어.. ㅠㅠ







Level1 - KingSort

더보기


이름을 Sorting 하는 문제..

이문제의 핵심은 Roman digit을 아라비아 숫자로 변환하는데 있다.. 예전에 짜둔게 있어서 그냥 복.붙 했는데..
30% unused 어쩌구 warning 이 나서 한참 삽질했다.. -_-
line 84 를 넣으니깐 warning 이 사라짐.. 이것땜에 시간 엄청 까먹음..

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 using namespace std;
  7 //#define min(x, y) ((x) > (y) ? (y) : (x))
  8 //#define max(x, y) ((x) > (y) ? (x) : (y))
  9 //#define INF 999999999
 10 //#define EPS 1e-14
 11
 12 typedef struct _n {
 13     char name[100];
 14     char no[100];
 15     int val;
 16 } NAME;
 17 NAME king[55];
 18 int n;
 19 int to_arab(char* buf)
 20 {
 21     int len, sum, temp, i;
 22     char ch;
 23     len = strlen(buf);
 24     sum = 0;
 25     for (i = 0; i < len; i++) {
 26         ch = buf[i];
 27         if (ch == 'L') {
 28             sum += 50;
 29         }
 30         else if (ch == 'X') {
 31             temp = 0;
 32             for ( ; i < len && buf[i] == 'X'; i++) {
 33                 temp += 10;
 34             }
 35             if (buf[i] == 'L' || buf[i] == 'C')
 36                 sum -= temp;
 37             else
 38                 sum += temp;
 39             i--;
 40         }
 41         else if (ch == 'V') {
 42             sum += 5;
 43         }
 44         else {
 45             temp = 0;
 46             for ( ; i < len && buf[i] == 'I'; i++) {
 47                 temp += 1;
 48             }
 49             if (buf[i] == 'V' || buf[i] == 'X')
 50                 sum -= temp;
 51             else
 52                 sum += temp;
 53             i--;
 54         }
 55     }
 56     return sum;
 57 }
 58
 59
 60 int comp(const void* x, const void* y)
 61 {
 62     int val1, val2;
 63     NAME* a = (NAME*)x;
 64     NAME* b = (NAME*)y;
 65     if (strcmp(a->name, b->name) != 0) {
 66         return strcmp(a->name, b->name);
 67     }
 68     val1 = to_arab(a->no);
 69     val2 = to_arab(b->no);
 70     return val1 - val2;
 71 }
 72
 73 class KingSort {
 74 public:
 75
 76 vector <string> getSortedList(vector <string> kings)
 77 {
 78     int i;
 79     string temp;
 80     vector<string> res;
 81     n = kings.size();
 82     for (i = 0; i < n; i++) {
 83         sscanf(kings[i].c_str(), "%s%s", king[i].name, king[i].no);
 84         king[i].val = to_arab(king[i].no);
 85     }
 86     qsort(king, n, sizeof(NAME), comp);
 87     for (i = 0; i < n; i++) {
 88         temp = king[i].name;
 89         temp = temp + " ";
 90         temp = temp + king[i].no;
 91         res.push_back(temp);
 92     }
 93     return res;
 94 }
 95
 96 };



Level3 -  BigAndSmallAirports

더보기




xx


저작자 표시

'Problem Solving > TopCoder logs' 카테고리의 다른 글

SRM 529  (0) 2012/01/15
SRM 521  (0) 2011/10/24
SRM 511  (0) 2011/07/04
TCO11 R1 - 탈락  (0) 2011/06/23
SRM 509 !!  (0) 2011/06/09
SRM 507 - 나이스!  (0) 2011/05/30
Trackback Address :: http://helloneo.pe.kr/trackback/453 관련글 쓰기
Name
Password
Homepage
Secret
prev"" #1 #2 #3 #4 #5 ... #119 next