CIV5... 문명하셨습니다 KimJJ 십수번의 시도 끝에 평범한 nCr문제가 맞는 거 아닌가 도대체 무엇이 문제란 말인가 하며 좌절하기에 이르렀습니다 아래는 코드입니다. orz ~~~ c++ #include #include #include #include using namespace std; typedef unsigned int uint; vector< pair, int> > Data; vector< pair > ans; inline int min(int a,int b){return a>b?b:a;} inline int sgn(int a){return a<0?-1:a==0?0:1;} int main(){ vector bino; int T; cin >> T; int num=0; int max_x=0; while(T--){ int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; const int a=x1 - x2; const int b=y1 - y2; int y, x; if(sgn(a) * sgn(b) >= 0){ y = abs(a) + abs(b); x = abs(b); } else{ if(abs(a) >= abs(b)){ y = abs(a); x = abs(b); } else{ y = abs(b); x = abs(a+b); } } // cout << y << " " << x << endl; Data.push_back(make_pair(make_pair(y,x), num++)); } sort(Data.begin(), Data.end()); int i, j, di, last = 0x7fffffff; bino.push_back(1u); for(i=di=0; di < Data.size() ;++i){ j=bino.size()-2; j=min(j, last); //cout << j << "\n"; for(;j>=1;--j){ bino[j] += bino[j-1]; if(bino[j] > 0x7fffffffu) last = j-1; } while(di < Data.size() && Data[di].first.first == i){ ans.push_back(make_pair(Data[di].second, bino[ Data[di].first.second ])); ++di; } bino.push_back(1u); } sort(ans.begin(), ans.end()); for(i=0;i<ans.size();++i){ cout << ans[i].second << endl; } return 0; } ~~~ 13년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
KimJJ
십수번의 시도 끝에
평범한 nCr문제가 맞는 거 아닌가
도대체 무엇이 문제란 말인가 하며
좌절하기에 이르렀습니다
아래는 코드입니다.
orz
~~~ c++
#include
#include
#include
#include
using namespace std;
typedef unsigned int uint;, int> > Data; > ans;
vector< pair
vector< pair
inline int min(int a,int b){return a>b?b:a;}
inline int sgn(int a){return a<0?-1:a==0?0:1;}
int main(){ bino;
vector
int T;
cin >> T;
// cout << y << " " << x << endl;
Data.push_back(make_pair(make_pair(y,x), num++));
}
sort(Data.begin(), Data.end());
}
~~~
13년 전