ichirin2501's diary

いっちりーん。

Codeforces Beta Round #34 (Div. 2)

書き忘れてたことを思い出したので、今書く。書き終わったらavtokyo行ってきますw

A :: Reconnaissance 2

int main(){
   int n;
   while(cin>>n){
      vector<int> v;
      vector< pair<int,int> > ans;
      int m;
      
      rep(i,n){
         int a; cin>>a;
         v.pb(a);
      }
      int ii,jj;
      m = 999999999;
      for(int i=0; i<n; i++){
         int k = abs(v[i]-v[(i+1)%n]);
         if( k<m ){
            ans.pb( mp(i+1,((i+1)%n)+1) );
            ii = i+1;
            jj = ((i+1)%n)+1;
            m = k;
         }
      }
      printf("%d %d\n",ii,jj);
   }
   return 0;
}

B :: Sale

int main(){
   int n,m;
   while(cin>>n>>m){
      vector<int> v;
      rep(i,n){
         int a; cin>>a;
         v.pb(a);
      }
      sort( all(v) );
      
      int ret = 0;
      rep(i,m)if( v[i]<=0 )ret+=v[i];
      printf("%d\n",-ret);
   }
   return 0;
}

C :: Page Numbers

int main(){
   string str;
   while(cin>>str){
      stringstream ss(str);
      int dic[1010];
      int a;
      memset(dic,0,sizeof(dic));
      while(ss>>a){
         dic[a]=1;
         char c; ss>>c;
         //printf(":::%c\n",c);
      }
      int f,st;
      vector<string> vs;
      char tmp[1000];
      f = 0;
      st = -1;
      REP(i,1,1010){
         if( dic[i] && f==0 ){
            f = 1;
            st = i;
         }else if( !dic[i] ){
            if( st>0 && i-st>1 ){
               sprintf(tmp,"%d-%d",st,i-1);
               vs.pb(string(tmp));
            }
            else if( st>0 ){
               sprintf(tmp,"%d",st);
               vs.pb(string(tmp));
            }
            f = 0;
            st = -1;
         }
      }
      rep(i,vs.size()){
         if( i>0 )putchar(',');
         cout << vs[i];
      }puts("");
   }
   return 0;
}

ぼやき

問題文がわかりづらすぎw
D問題を理解したのは終了間際…、Dは幅優先