PAT練習(八)


PAT 1030B/1085A
https://pintia.cn/problem-sets/994805260223102976/problems/994805291311284224テストポイント4タイムアウト、5エラー
#include
#include
#include
#include
using namespace std;
int main(){
	int n,p,max;
	cin>>n>>p;
	int arr[100010]={0};
	for(int i=0;i>arr[i];
	} 
	sort(arr,arr+n);
	max=arr[n-1];
	int maxN=0; 
	for(int i=0;i=max){
				num++;
			}
		}
		if(num>maxN) maxN=num;
	}
	cout<

PAT 1035 B挿入と集計(25分)/1089 A
https://pintia.cn/problem-sets/994805260223102976/problems/994805286714327040テストポイント5,6エラー
#include
#include
#include
using namespace std;
int ori[110],tempOri[110],arr[110],n;
void showA(){
	cout<0&&tempOri[j-1]>temp){
				tempOri[j]=tempOri[j-1];
				j--;
		}
		tempOri[j]=temp;
		if(flag==true){
			return true;
		}
	} 
	return false;
}
bool mergeA(){
	bool flag=false;
	for(int i=2;i/2<=n;i+=2){
		if(i!=2&&res()){
			flag=true;
		}
		for(int j=0;j>n;
	for(int i=0;i>ori[i];
		tempOri[i]=ori[i];
	}
	for(int i=0;i>arr[i];
	}
	if(insertA()){
		cout<

PAT 1029A
https://pintia.cn/problem-sets/994805342720868352/problems/994805466364755968テストポイント5,7,8実行タイムアウト、3回答エラー
#include
#include
using namespace std;
int main(){
	int arr[200010]={0};
	int n,m;
	cin>>n;
	int cnt=0;
	for(int i=0;i>arr[i];
	}	
	cin>>m;
	int index=(n+m-1)/2;
//	for(int i=0;i>arr1[i];
//	}
//	int i=0,j=0;
//	while(cnt>temp;
		cnt=0;
		for(;itemp){
				flag=i;
				break;
			}
			cnt++;
		}
		for(int j=n;j>i;j--){
			arr[j]=arr[j-1];
		}
		arr[i]=temp;
		n++;
		j++;
		cnt++;
		
	}
	cout<

PAT 1048 A Find Coins(25分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805432256675840テストポイント3,4運転タイムアウト
#include
#include
#include
using namespace std;
int main(){
	int arr[100010]={0};
	int n,m;
	cin>>n>>m;
	bool flag=false;
	for(int i=0;i>arr[i];
	}
	sort(arr,arr+n);
	int left=0,right=0;
	for(int i=0;im){
				break;
			}
		}
		if(flag){
			break;
		}
	}
	if(flag==false){
		cout<

PAT 1040 BにはいくつかのPAT(25点)/1093 Aがあります
https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616
        #include
#include
#include
using namespace std;
int main(){
	int leftP[100010]={0};
	string str;
	getline(cin,str);
	int right=0,rs=0;
	for(int i=0;i0){
			leftP[i]=leftP[i-1];
		}
		if(str[i]=='P'){
			leftP[i]+=1;
		}
	}
	//    T   ,           P     。          
	for(int i=str.length()-1;i>=0;i--){
		if(str[i]=='T'){
			right+=1;
		}
		else if(str[i]=='A'){
			rs=(rs+leftP[i]*right)%1000000007;
		}
	} 
	cout<

PAT 1045 Bクイックソート(25点)/1011 A
https://pintia.cn/problem-sets/994805260223102976/problems/9948052785899601923つのテストポイントの実行タイムアウト
#include
#include
using namespace std;
int main(){
	int arr[100010]={0};
	int f[100010]={0};
	int n=0,count=0;
	
	cin>>n;
	for(int i=0;i>arr[i];
	}
	for(int i=0;iarr[i]){
				flag=false;
				break;
			}
		}
		if(flag){
			for(int j=n-1;j>i;j--){
				if(arr[j]0){
		cout<

暴力解読タイムアウト、修正
#include
#include
#include
using namespace std;
int main(){
	int arr[100010]={0},leftMax[100010]={0},rightMin[100010],rs[100010]={0};
	int n=0,count=0;	
	cin>>n;
	for(int i=0;i>arr[i];
	}
	//             
	for(int i=1;i=0;i--){
		rightMin[i]=min(rightMin[i+1],arr[i+1]);
	}
	//        
	for(int i=0;iarr[i]){
			rs[count]=arr[i];
			count=count+1;
		}
	}
	if(count>0){
		cout<