結果

問題 No.482 あなたの名は
ユーザー splatatsugomasplatatsugoma
提出日時 2017-02-10 23:47:59
言語 C90
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 2,579 bytes
コンパイル時間 126 ms
コンパイル使用メモリ 22,912 KB
実行使用メモリ 10,624 KB
最終ジャッジ日時 2024-06-09 05:52:52
合計ジャッジ時間 4,016 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
10,624 KB
testcase_01 AC 1 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 2 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 1 ms
5,376 KB
testcase_07 WA -
testcase_08 AC 2 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
testcase_10 AC 2 ms
5,376 KB
testcase_11 AC 2 ms
5,376 KB
testcase_12 WA -
testcase_13 WA -
testcase_14 AC 2 ms
5,376 KB
testcase_15 TLE -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:91:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   91 |         scanf("%d",&N);
      |         ^~~~~~~~~~~~~~
main.c:92:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   92 |         scanf("%d",&K);
      |         ^~~~~~~~~~~~~~
main.c:98:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   98 |                 scanf("%d",&ary[i]);
      |                 ^~~~~~~~~~~~~~~~~~~

ソースコード

diff #

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int count=0;

int bubblesort(int x[ ], int n)
{
    int i, j, temp,c=0;

    for (i = 0; i < n - 1; i++) {
        for (j = n - 1; j > i; j--) {
            if (x[j - 1] > x[j]) {  
                temp = x[j];        
                x[j] = x[j - 1];
                x[j - 1]= temp;
		c++;
            }
        }	
    }
	//printf("%d",c);
	return c;
}

int selectsort(int num[ ], int n){
    int i, j, k, min, temp,c=0;

    for (i = 0; i < n - 1; i++) {
        min = num[i];                 
        k = i;                        
        for (j = i + 1; j < n; j++) {
            if (num[j] < min) {       
                min = num[j];         
                k = j;                
            }
        }                             
        temp = num[i];                
        num[i] = num[k];
        num[k] = temp;
        c++;
    }
	//printf("%d",c);
	return c;
}

void Swap(int x[ ], int i, int j)
{
    int temp;

    temp = x[i];
    x[i] = x[j];
    x[j] = temp;
}


void quicksort(int x[ ], int left, int right)
{
    int i, j;
    int pivot;


    i = left;                      
    j = right;                     

    pivot = x[(left + right) / 2]; 

    while (1) {                    

        while (x[i] < pivot)       
            i++;                   

        while (pivot < x[j])       
            j--;                   
        if (i >= j)                
            break;                 

        Swap(x, i, j); 
	count++;            
        i++;                       
        j--;
    }              

    if (left < i - 1)              
        quicksort(x, left, i - 1);   
    if (j + 1 <  right)           
        quicksort(x, j + 1, right);   
}

int main(){
	int i,N,K,ary[200000],cp[200000],ans,flag=0;
	scanf("%d",&N);
	scanf("%d",&K);
	
	//printf("%d",N);
	//printf("%d",K);

	for(i=0;i<N;i++){
		scanf("%d",&ary[i]);
	}

	memcpy(cp,ary,sizeof(int)*N);
	ans=bubblesort(cp,N);
	/*for(i=0;i<N;i++){
		printf("%d ",cp[i]);
	}*/
	if(ans<=K){
		if((K-ans)%2==0) flag=1;
		else if((K-ans)%2==1) flag=0;
	}else{
		//memcpy(cp,ary,sizeof(int)*N);
		//ans=selectsort(cp,N);
		//if(ans<=K){
		//	if((K-ans)%2==0) flag=1;
		//	else if((K-ans)%2==1) flag=0;
		//}else{
			memcpy(cp,ary,sizeof(int)*N);
			quicksort(cp,0,N-1);
			//printf("%d",count);			
			if(count<=K){
				if((K-count)%2==0) flag=1;
				else if((K-count)%2==1) flag=0;
			}else flag =2;
		//}
	}
	

	if(flag==0) printf("NO\n");
	else if(flag==1) printf("YES\n");
	else if(flag==2) printf("NO\n");
	return 0;
}
0