| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:总是wrong answer, 求大神帮忙看看In Reply To:总是wrong answer, 求大神帮忙看看 Posted by:longsunsp at 2017-11-02 17:33:00 >
> #define _CRT_SECURE_NO_WARNINGS
> #include <iostream>
> using namespace std;
> const int size = 1000;
> const int out_size = 8000;
> int pairs[size][2];
> int output[out_size][2];
> int mmax(int a, int b){
> return a > b ? a : b;
> }
> int abss(int a, int b){
> if (a > b) return a - b;
> else return b - a;
> }
> int width = 0;
> int pixel_num = 0;
> int len = 0;
> int out_len = 0;
> int height = 0;
> int cache[out_size];
> int get_value(int pos){
> int i = 0, j = 0;
> while (j < pos){
> j += pairs[i++][1];
> }
> return pairs[i-1][0];
> }
> int get_max(int pos){
> int row = (pos-1) / width;
> int col = (pos-1) % width;
> int p = get_value(pos);
> int max12 = 0;
> for (int i = row - 1; i < row + 2;i++){
> for (int j = col - 1; j < col + 2;j++){
> int tmp_pos = i*width + j;
> if (i < 0 || j < 0 || j >= width || (i == row && j == col) || tmp_pos >= pixel_num) continue;
> int v = get_value(tmp_pos+1);
> //cout << "p: " << p << " v: " << v << endl;
> max12 = mmax(max12, abss(p, v));
> }
> }
> //cout <<"row:"<<row<<" col:"<<col<< " max : " << max12 << endl;
> return max12;
> }
> void exchange(int arr[out_size][2], int i, int j){
> int t[2];
> t[0] = arr[j][0];
> t[1] = arr[j][1];
> arr[j][0] = arr[i][0];
> arr[j][1] = arr[i][1];
> arr[i][0] = t[0];
> arr[i][1] = t[1];
> }
> int partition(int arr[out_size][2], int p, int r){
> int i = p - 1;
> int pivot = arr[r][0];
> for (int j = p; j < r; j++){
> if (arr[j][0] < pivot){
> i++;
> exchange(arr, i, j);
> }
> }
> exchange(arr, i+1, r);
> return i + 1;
> }
> void quicksort(int arr[out_size][2], int p, int r){
> if (p < r){
> int q = partition(arr, p, r);
> quicksort(arr, p, q - 1);
> quicksort(arr, q + 1, r);
> }
> }
> int main(){
> //freopen("Text.txt", "r", stdin);
> int value, num;
> width = 0;
> while (cin >> width && width != 0){
> len = 0;
> pixel_num = 0;
> out_len = 0;
> while (cin >> value >> num && num > 0){
> pairs[len][0] = value;
> pairs[len++][1] = num;
> pixel_num += num;
> }
>
> height = pixel_num / width;
> int pos = 1;
> int index = 0;
> for (int p = 0; p < len; p++){
> int row = (pos -1) / width;
> int col = (pos -1) % width;
> for (int i = row - 1; i < row + 2; i++){
> for (int j = col - 1; j < col + 2; j++){
> int tmp_pos = i*width + j;
> if (i < 0 || j < 0 || tmp_pos >= pixel_num) continue;
> output[index][0] = tmp_pos+1;
> int v = get_max(tmp_pos+1);
> output[index++][1] = v;
> }
> }
> pos += pairs[p][1];
> }
>
> ///head point at the last line
> int tmp_pos = (height-1)*width;
> output[index][0] = tmp_pos+1;
> output[index++][1] = get_max(tmp_pos+1);
>
> ///last point at the last line
> tmp_pos = pixel_num - 1;
> output[index][0] = tmp_pos;
> output[index++][1] = get_max(tmp_pos);
> quicksort(output, 0, index-1);
> /*
> cout << "================================================" << endl;
> for (int i = 0; i < index; i++){
> cout << output[i][0] << " " << output[i][1] << endl;
> }
> cout << "================================================" << endl;
> */
> cout << width << endl;
> int res_value = output[0][1];
> int start_pos = 1;
> for (int i = 0; i < index; i++){
> if (output[i][1] == res_value) continue;
> cout << res_value << " " << output[i][0] - start_pos<< endl;
> start_pos = output[i][0];
> res_value = output[i][1];
> }
> cout << res_value << " " << pixel_num - start_pos +1<< endl;
> cout << "0 0" << endl;
> }
> cout << "0" << endl;
> return 0;
> }
54188
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator