int romanToInt(string s) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     int result = 0;
     for(int i=0; i<s.size(); i++){
         // if current symbol is greater than its previous
         // the value for these two symbol is the second-first
         if(i>0 && c2n(s[i])>c2n(s[i-1]))
             result+=c2n(s[i])-2*c2n(s[i-1]);
         else
             result+=c2n(s[i]);
     }
     return result;
 }
Beispiel #2
0
main () {
    FILE *fin  = fopen ("comehome.in", "r");
    FILE *fout = fopen ("comehome.out", "w");
	
	int an,ret;
    int i,j,k,t;
	char a,b;
	
    fscanf (fin, "%d\n", &an);
	
	for(i=0;i<an;i++){
		fscanf (fin, "%c %c %d\n", &a,&b,&t);
		if(!adj[c2n(a)][c2n(b)]||adj[c2n(a)][c2n(b)]>t){
			adj[c2n(a)][c2n(b)]=t;
			adj[c2n(b)][c2n(a)]=t;
		}
	}
	
	for(k=0;k<xn*2-1;k++){
		for(i=0;i<xn*2;i++){
			for(j=0;j<xn*2;j++){
				if(i!=j&&adj[i][k]&&adj[j][k]&&(!adj[i][j]||adj[i][j]>adj[i][k]+adj[j][k]))
					adj[i][j]=adj[i][k]+adj[j][k];
			}
		}
	}
	
	t=0;ret=xn-1;
	for(i=xn;i<xn*2-1;i++){
		if(adj[i][xn*2-1]&&(!t||t>adj[i][xn*2-1])){
			ret=i-xn;
			t=adj[i][xn*2-1];
		}
	}
	
    fprintf (fout, "%c %d\n",(char)(ret+'A'),t);
    exit (0);
}
 _n2clookup() {
     for(int j = 0; j < VS_COUNTS; ++j) {
         t[c2n((uint64_t) j)] = (unsigned char) j;
     }
 }