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は幅優先