Problem:
Score : 100 points

Problem Statement

You are given three integers A, B and C.
Determine whether C is not less than A and not greater than B.

Constraints

-100≤A,B,C≤100

A, B and C are all integers.

Input

Input is given from Standard Input in the following format:

A B C

Output

If the condition is satisfied, print Yes; otherwise, print No.

Sample Input 1

1 3 2

Sample Output 1

Yes

C=2 is not less than A=1 and not greater than B=3, and thus the output should be Yes.

Sample Input 2

6 5 4

Sample Output 2

No

C=4 is less than A=6, and thus the output should be No.

Sample Input 3

2 2 2

Sample Output 3

Yes

Solution in C (GCC 5.4.1) (judge verdict: Runtime Error)

#include <stdio.h>
#include <stdlib.h>//random,NULL
#include <string.h>
#include <time.h>
#include <unistd.h>//sleep()
#include <math.h>

#define true 1
#define false 0

#define rep(i,n) for(int i=0; i<((int)n); i++)
#define REP(i,n) for(int i=0; i<=((int)n); i++)
#define srep(i,a,n) for(int i=a; i<((int)n); i++)
#define SREP(i,a,n) for(int i=a; i<=((int)n); i++)
#define rrep(i,n) for(int i=n-1; i>=0; i--)
#define RREP(i,n) for(int i=n; i>=0; i--)
#define INF 1000000000

//有向グラフ
//cが負の値も取りうることと、N^3はデカすぎることより
//bellman_ford法を用いる。
//今回は普通のベルマンではないが。
/*
  アルゴリズム概要
  N-1回実行する間に、頂点Nの値は少なくとも１回更新される。
  まずはこのN-1回の中で最大化される時を見つける
  次に、N回目にも値が更新された時、閉路があるということなので、infになるかを調べる。
  次のN回の内（ループは最大でN）、さらに大きくなることがあれば、inf
*/

int bellman_ford(int N, int M, int **edge){
  int *d=(int *)malloc(sizeof(int)*N);
  rep(i,N){
    d[i]=INF;
  }
  d[0]=0;

  rep(k,N-1){
    //int update=false;
    rep(j,M){
      if(d[edge[j][0]]!=INF && (d[edge[j][1]]==INF || d[edge[j][0]]+edge[j][2]>d[edge[j][1]])){
        d[edge[j][1]]=d[edge[j][0]]+edge[j][2];
        //update=true;
      }
    }
  }
  // rep(i,N){
  //   printf("d[%d] = %d, ", i, d[i]);
  // }
  // printf("\n");
  //この時点で、d[N-1]にはN-1回の内で最大値が入っている。
  int record=d[N-1];

  rep(k,N){
    rep(j,M){
      if(d[edge[j][0]]+edge[j][2]>d[edge[j][1]]){
        d[edge[j][1]]=d[edge[j][0]]+edge[j][2];
      }
    }
  }
  // rep(i,N){
  //   printf("d[%d] = %d, ", i, d[i]);
  // }
  // printf("\n");

  if(record<d[N-1]){
    return INF;
  }
  else{
    return record;
  }
}




int main(){
  char buf[1024];
  int N,M;

  fgets(buf,sizeof(buf),stdin);
  sscanf(buf, "%d %d", &N, &M);

  int *array=(int *)malloc(sizeof(int)*N);
  rep(i,N){
    ;
  }

  int **edge=(int **)malloc(sizeof(int *)*M);
  rep(i,M){
    edge[i]=(int *)malloc(sizeof(int)*3);
  }
  rep(i,M){
    fgets(buf,sizeof(buf),stdin);
    sscanf(buf, "%d %d %d", &edge[i][0], &edge[i][1], &edge[i][2]);
    edge[i][0]--;
    edge[i][1]--;
  }

  int longest=bellman_ford(N, M, edge);

  if(longest==INF){
    printf("inf\n");
  }
  else{
    printf("%d\n", longest);
  }

  return 0;
}